无法将Django模型导入celery任务 [英] can't import django model into celery task

查看:205
本文介绍了无法将Django模型导入celery任务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下任务:

$ __________________________________________________________________从__future__导入$ _ $$$$$来自myapp.models的应用程序

导入实体


@ app.task
def add(entity_id):
实体= Entity.objects .get(pk = entity_id)
返回entity.name

我得到以下错误:


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


如果我取出实体导入,一切都很好,不会发生任何错误。添加回时:

 从myapp.models导入实体

错误返回。

  from __future__ import unicode_literals 
from django.contrib.auth.models从django.db导入用户
从django.core.mail导入模型
从django.template导入EmailMultiAlternatives
上下文,来自django的加载器
。 utils.html import strip_tags

类Entity(models.Model):
area = models.ForeignKey(Area)
name = models.CharField(max_length = 255)
类型=模型.CharField(max_length = 255)
状态=模型.IntegerField(选择= STATUS_TYPES,默认= 0)
created_at =模型.DateTimeField(auto_now_add = True)
Updated_at =模型.DateTimeField(auto_now = True)


def __unicode __(self):
return self.name

如何将Django模型导入到芹菜任务中?

解决方案

我的芹菜文件必须具有:

  from __future__ import absolute_import 

import os从celery导入的

Celery


#为 celery程序设置默认的Django设置模块。
os.environ.setdefault('DJANGO_SETTINGS_MODULE','myproject.settings')

来自django.conf导入设置#noqa

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


i have the following task:

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

I get the following error:

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

If I take out the entity import every thing is fine and no error occurs. When add back :

from myapp.models import Entity

the error returns.

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

How do I import a django model into a celery task?

解决方案

My celery file needed to have:

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

Thanks for helping me get to that conclusion @mtndesign

这篇关于无法将Django模型导入celery任务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆