Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django芹菜收到类型为'的未注册任务;打印测试&x27;_Python_Django_Celery_Celerybeat - Fatal编程技术网

Python django芹菜收到类型为'的未注册任务;打印测试&x27;

Python django芹菜收到类型为'的未注册任务;打印测试&x27;,python,django,celery,celerybeat,Python,Django,Celery,Celerybeat,与问题相一致: 我用芹菜做了django,比如: drf_项目/drf_项目/芹菜.py from __future__ import absolute_import, unicode_literals from celery import Celery import os os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'drf_project.settings') app = Celery('drf_project') app.config_

与问题相一致:

我用芹菜做了django,比如:

drf_项目/drf_项目/芹菜.py

from __future__ import absolute_import, unicode_literals
from celery import Celery
import os

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'drf_project.settings')
app = Celery('drf_project')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
在drf_项目/drf_项目/init.py中

from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app

__all__ = ['celery_app']
drf_项目/用户管理/tasks.py

from drf_project.celery import app
from time import strftime

@app.task
def print_test():
    print strftime('%Y-%m-%d %H:%M:%S')
    with open('abc.txt', 'ab+') as test_file:
        test_file.writeline(strftime('%Y-%m-%d %H:%M:%S'))
在drf_项目/drf_项目/settings.py中

INSTALLED_APPS += ('django_celery_beat',)
CELERYBEAT_SCHEDULE = {
    "test_1": {
        "task": "tasks.print_test",
        "schedule": timedelta(seconds=2),
    },
}
我用命令在不同的终端上运行芹菜工人和beat:

celery -A drf_project worker -l info -E

beat每2秒向工人发送一次任务,如:

[2016-11-28 12:25:19314:INFO/MainProcess]调度程序:发送到期任务导入联系人(打印测试)

但是worker抛出的错误如下所示:

[2016-11-28 12:24:57551:ERROR/MainProcess]收到类型为“print_test”的未注册任务。 该消息已被忽略和丢弃

您是否记得导入包含此任务的模块? 或者您使用的是相对导入

请看 了解更多信息

邮件正文的全部内容为: u'[],{},{“chord”:null,“callbacks”:null,“errbacks”:null,“chain”:null}'(77b) 回溯(最近一次呼叫最后一次): 文件“/usr/local/lib/python2.7/dist packages/芹菜/worker/consumer/consumer.py”,第549行,在收到的on_任务中 策略=策略[类型\] KeyError:“打印测试”

我可以在我的worker应用程序中看到任务,如:

[tasks]
  . user_management.tasks.print_test

如何解决此错误?

尝试在CELERYBEAT\u计划中设置任务的绝对路径,“用户管理.任务.打印测试”

应该是这样的:

INSTALLED_APPS += ('django_celery_beat',)
CELERYBEAT_SCHEDULE = {
    "test_1": {
        "task": "user_management.tasks.print_test",
        "schedule": timedelta(seconds=2),
    },
}

我什么都试过了。从
“用户管理.任务.打印测试”
“drf\U项目.用户管理.任务.打印测试”
。如果我使用这两个选项中的任何一个,我都看不到worker中列出的任务。只有在我选择任务时,它才会显示在worker中。在CELERYBEAT计划中,任务必须按其在芹菜任务列表中的显示进行调用。请尝试列出所有任务并搜索您的任务,从proj.芹菜导入应用>>>app.tasks{'celery.chord_unlock':,'celery.backend_cleanup','celery.chord':}我无法在app.tasksTry中使用'code'芹菜查看我的任务-A{celery_app_name}检查已注册的'code'这将返回所有已注册的任务。
INSTALLED_APPS += ('django_celery_beat',)
CELERYBEAT_SCHEDULE = {
    "test_1": {
        "task": "user_management.tasks.print_test",
        "schedule": timedelta(seconds=2),
    },
}