django 1.7rc3 and celery 3.13 - AppRegistryNotReady



这对我的不起作用

$>cat/etc/lsb发布
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=精确
DISTRIB_DESCRIPTION="Ubuntu 12.04.2 LTS"

django 1.7rc3
芹菜3.1.13
python 2.7

我尝试运行

celery worker -A <project_name>

我得到

django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.

runserver命令运行良好,所以我认为它与我的设置无关?

python manage.py runserver 0.0.0.0:8080

我已经仔细检查了celery.py,并确认它具有以下行的正确值:

# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings')
app = Celery('proj')
# Using a string here means the worker will not have to
# pickle the object when using Windows.
app.config_from_object('django.conf:settings')

我还有别的事情要做吗?

Django 1.7现在需要对独立脚本进行不同的初始化。当在manage.py上下文之外运行时,您现在需要包括:
import django
django.setup()

尝试在脚本中的app = Celery('proj')之前添加它。

我发现失败的原因是因为我的一个任务中有这个。py

CURRENT_DOMAIN = Site.objects.get_current().domain

我现在和站在一边

CURRENT_DOMAIN = lambda: Site.objects.get_current().domain

目前正在等待github上是否有人愿意提供更好的推荐。https://github.com/celery/celery/issues/2227

如果我得到一个,就会更新。如果没有,可能只会做一个助手函数,懒惰会返回我想要的值。

更新
根据芹菜作者的建议,我已经重构了代码,所以我不会在模块级别进行调用
他还通过确保在导入任务模块之前调用django.setup()来解决这个问题
https://github.com/celery/celery/issues/2227

我看到了同样的问题,但只有

CELERYBEAT_SCHEDULER='djcelery.schedulers.DatabaseScheduler'

你启用了这个吗?如果我用默认的芹菜调度程序运行它,它的负载就很好。但是无法使用Django调度程序加载它。

相关内容

  • 没有找到相关文章

最新更新