繁体   English   中英

Django 1.9:CELERY_IMPORTS 不起作用

[英]Django 1.9: CELERY_IMPORTS not working

我正在努力解决 celery 没有按照其文档要求执行的操作:我有一个 DJango 1.9 应用程序,我正在运行 celery 3.1.20,我有以下内容:

我的应用程序/芹菜.py:

from __future__ import absolute_import
import os

from celery import Celery

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myapp.settings')
from django.conf import settings  # noqa

app = Celery('myapp')
app.config_from_object('django.conf:settings')

myapp/jobs/tasks.py:

from myapp.celery import app

class Job1(app.Task):
    ...
     name = 'job_1'
    ...


class Job2(app.Task):
    ...
     name = 'job_2'
    ...

但是,我已经尝试了两者:

我的应用程序/settings.py:

CELERY_IMPORTS = ('myapp.jobs.tasks',)

我的应用程序/芹菜.py:

app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

并且都没有正确注册我的任务。 一旦我手动导入定义任务的模块,这些任务只会出现在 app.tasks 中,所以当我使用任务来确保它被加载时,我不得不做一个丑陋的本地导入黑客。

在 Django 外壳中:

In [1]: from myapp.celery import app

In [2]: app.tasks
Out[2]:
{'celery.backend_cleanup': <@task: celery.backend_cleanup of myapp:0x10dc260d0>,
 'celery.chain': <@task: celery.chain of myapp:0x10dc260d0>,
 'celery.chord': <@task: celery.chord of myapp:0x10dc260d0>,
 'celery.chord_unlock': <@task: celery.chord_unlock of myapp:0x10dc260d0>,
 'celery.chunks': <@task: celery.chunks of myapp:0x10dc260d0>,
 'celery.group': <@task: celery.group of myapp:0x10dc260d0>,
 'celery.map': <@task: celery.map of myapp:0x10dc260d0>,
 'celery.starmap': <@task: celery.starmap of myapp:0x10dc260d0>}

In [3]: app.conf['CELERY_IMPORTS']
Out[3]: ('myapp.jobs.tasks',)

In [4]: from myapp.jobs import tasks

In [5]: app.tasks
Out[5]:
{'celery.backend_cleanup': <@task: celery.backend_cleanup of myapp:0x10dc260d0>,
 'celery.chain': <@task: celery.chain of myapp:0x10dc260d0>,
 'celery.chord': <@task: celery.chord of myapp:0x10dc260d0>,
 'celery.chord_unlock': <@task: celery.chord_unlock of myapp:0x10dc260d0>,
 'celery.chunks': <@task: celery.chunks of myapp:0x10dc260d0>,
 'celery.group': <@task: celery.group of myapp:0x10dc260d0>,
 'celery.map': <@task: celery.map of myapp:0x10dc260d0>,
 'celery.starmap': <@task: celery.starmap of myapp:0x10dc260d0>,
 'job_1': <@task: job_1 of myapp:0x10dc260d0>,
 'job_2': <@task: job_2 of myapp:0x10dc260d0>,
 'job_3': <@task: job_3 of myapp:0x10dc260d0>}

任何想法这里发生了什么? 在我自己导入模块之前,它不会加载任务。

提前致谢。

遇到了同样的问题,并将虚线 python 路径更改为相关应用程序 settings.py 中 INSTALLED_APPS 下的应用程序配置,仅更改为应用程序模块的名称,它似乎可以工作(目前)。 在 Django 1.9 中,看起来 INSTALLED_APPS 可以采用点状 python 路径到应用程序配置文件,或者像早期版本一样只采用模块名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM