2

问题:当我从自定义文件导入数据时,@shared_task 装饰器不起作用。我的意思是,当我启动 celery 时,@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(....)
    ...
    ...

为什么?!?

4

1 回答 1

4

该问题的解决方案是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(....)
    ...
    ...
于 2017-05-03T08:22:28.950 回答