无法将django模型导入芹菜任务

Atm*_*tma 6 python django celery django-celery

我有以下任务:

from __future__ import absolute_import

from myproject.celery import app

from myapp.models import Entity


@app.task
def add(entity_id):
    entity = Entity.objects.get(pk=entity_id)
    return entity.name
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

django.core.exceptions.ImproperlyConfigured:请求设置DEFAULT_INDEX_TABLESPACE,但未配置设置.您必须在访问设置之前定义环境变量DJANGO_SETTINGS_MODULE或调用settings.configure().

如果我取出实体导入,那么每件事情都没有问题,也就不会发生错误.加回时:

from myapp.models import Entity
Run Code Online (Sandbox Code Playgroud)

错误返回.

from __future__ import unicode_literals
from django.contrib.auth.models import User
from django.db import models
from django.core.mail import EmailMultiAlternatives
from django.template import Context, loader
from django.utils.html import strip_tags

class Entity(models.Model):
    area = models.ForeignKey(Area)
    name = models.CharField(max_length=255)
    type = models.CharField(max_length=255)
    status = models.IntegerField(choices=STATUS_TYPES, default=0)
    created_at = models.DateTimeField(auto_now_add = True)
    updated_at = models.DateTimeField(auto_now = True)


    def __unicode__(self):
        return self.name
Run Code Online (Sandbox Code Playgroud)

如何将django模型导入芹菜任务?

Atm*_*tma 6

我的芹菜文件需要有:

from __future__ import absolute_import

import os

from celery import Celery


# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')

from django.conf import settings  # noqa
Run Code Online (Sandbox Code Playgroud)

感谢您帮助我得出结论@mtndesign

  • 需要有什么?这几乎是Celery docs提供的默认celery.py.我不明白这个答案中的赞成票. (5认同)