@shared_task 装饰器不起作用
@shared_task decorator doesn't work
问题:当我从自定义文件导入数据时,@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(....)
...
...
为什么?!?
该问题的解决方案是将 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(....)
...
...
问题:当我从自定义文件导入数据时,@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(....)
...
...
为什么?!?
该问题的解决方案是将 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(....)
...
...