@shared_task装饰工作不起作用

时间:2017-04-30 09:31:51

标签: django celery celery-task cookiecutter-django

问题:当我从自定义文件导入数据时,@ shared_task装饰器不起作用。我的意思是,当我开始芹菜时,@ shared_task下的所有任务都不会出现在任务列表中。

例如,在这种情况下,@ shared_task装饰器不起作用:

from __future__ import absolute_import, unicode_literals

from celery import shared_task

from .models import foo


@shared_task
def my_foo_backup(id):
    my_foo = foo(....)
    ...
    ...

这是@shared_task工作时的示例:

from __future__ import absolute_import, unicode_literals

from celery import shared_task


@shared_task
def my_foo_backup(id):
    my_foo = foo(....)
    ...
    ...

为什么?!?

1 个答案:

答案 0 :(得分:3)

该问题的解决方案是在函数内部移动import命令。通过这种方式,它可以正常工作并符合PEP8的规则。

from __future__ import absolute_import, unicode_literals

from celery import shared_task


@shared_task
def my_foo_backup(id):
    from .models import foo

    my_foo = foo(....)
    ...
    ...