Skip to main content
 首页 » 编程设计

python之定期任务在 django celery 中无法正常工作

2024年10月24日34oomusou

你好 friend ,我需要你的帮助来完成 django 应用程序的周期性任务。我正在尝试使用 celery 执行定期任务,但它无法正常工作。我有一个简单的任务,其中只有一个打印语句。 Celery 只是第一次工作,我也尝试了'celery beat',但没有得到结果

我的“task.py”是

from __future__ import absolute_import 
from myapp.celery import app 
from celery.schedules import crontab 
from celery.task import periodic_task 
from celery.registry import tasks 
 
@periodic_task(run_every=(crontab(minute='*/1')), name="some_task") 
def every_minute(a,b): 
    print("This is running after one minute",a+b) 
    return "task done" 
tasks.register(every_minute) 

和“view.py”

from django.http import HttpResponse 
from django.views.generic import View 
from .tasks import * 
from .models import * 
from datetime import datetime, timedelta 
 
class CeleryTest(View): 
    def get(self,request): 
        send_date = datetime.now() + timedelta(seconds=200) 
        task=every_minute.apply_async([5,6],etc=send_date) 
        while not task.ready(): 
            print "calling............task is not ready" 
        return HttpResponse("hi get ur task") 

我刚刚在早期的 celery 设置中添加了这个时间表。“setting.py”

CELERYBEAT_SCHEDULE = { 
 
     'every_minute': { 
         'task': 'every_minute.add', 
         'schedule': crontab(minute='*/1'), 
         'args': (5, 6), 
     }, 
 } 

感谢各位 friend 的宝贵时间。

请您参考如下方法:

像这样使用你的时间表....

CELERYBEAT_SCHEDULE = { 
      'every_minute': { 
        'task': 'every_minute', 
      }, 
} 

并为 celery 运行这个命令

python manage.py celeryd -BE -l info 

现在我的周期性任务运行良好。