我将 Celery 4.4 与 Django 2.2
我必须创建一个定期任务,我要扩展 PeriodicTask 询问为
from celery.schedules import crontab
from celery.task import PeriodicTask
class IncompleteOrderHandler(PeriodicTask):
run_every = crontab(
minute='*/{}'.format(getattr(settings, 'INCOMPLETE_ORDER_HANDLER_PULSE', 5))
)
def run(self, *args, **kwargs):
# Task definition
eligible_users, slot_begin, slot_end = self.get_users_in_last_slot()
map(lambda user: self.process_user(user, slot_begin, slot_end), eligible_users)
我以前打电话来注册上面的任务
from celery.registry import tasks
tasks.register(IncompleteOrderHandler)
但是registry
中现在没有celery
模块。如何注册上述定期任务?
答案 0 :(得分:0)
我在基于班级的芹菜任务上遇到了同样的问题。这必须可行,但事实并非如此! 偶然地,我的问题在以下两个更改上被每个人解决了:
我在viewsets.py中的task.py中导入了一个基于类的任务,突然间我发现celery在task.py中找到了所有任务。
这是我的基本芹菜设置文件:
from __future__ import absolute_import
import os
from celery import Celery
from django.conf import settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'picha.settings')
app = Celery('picha')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
我将最后一行更改为app.autodiscover_tasks(lambda:
settings.CELERY_TASKS)
,并将CELERY_TASKS列表添加到settings.py并全部写入
然后在celery中找到task.py文件路径。
我希望其中一项能为您服务。