仅在完成所有任务后才保存任务结果

时间:2019-12-23 15:08:53

标签: python django redis celery django-celery

我想监视/报告任务状态,但是仅在完成所有任务后才保存任务。我希望它们一开始就被保存。

'''在我的队列项目中''' celery.py

from __future__ import absolute_import, unicode_literals
import os
from celery import Celery

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Queue.settings')
app = Celery('Queue',
    broker='redis://localhost:6379',
    backend='django-db',
    task_track_started=True,
    include=['index.tasks'])
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()

“索引”应用程序内部 task.py

from __future__ import absolute_import, unicode_literals
from celery import shared_task, current_task
import time

@shared_task
def gozle():
   time.sleep(15)
   return 1

views.py

def index(request):
    gozle.delay()
    return HttpResponse('<a href="admin/">admin</a>')

我希望当我访问索引页面时,我的任务会被触发并记录到ResultTask中,但是它会等待15秒然后被记录。

1 个答案:

答案 0 :(得分:0)

应该立即确认任务的开始,您应该在celery服务器上看到一个日志条目,上面写着celery任务已开始,然后等待15秒钟并退出,此退出状态也将保持打开状态task_acks_late服务器日志。如果不是这种情况,则可能与在celery配置中启用pn2有关,这里是doc,使其仅在任务结束后才确认任务。