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

问题描述 投票:0回答:1

我想监视/报告任务状态,但是仅在完成所有任务后才保存任务。我希望它们一开始就被保存。'''在我的队列项目中'''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秒然后被记录。

python django redis celery django-celery
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.