【发布时间】:2015-06-16 12:43:17
【问题描述】:
我有一个应用程序使用 django 使用 redis 和 celery 完成一些异步任务。 我正在使用 celery 任务来执行一些存储过程。此 SP 需要 5 分钟到 30 分钟才能完全执行(取决于记录的数量)。 一切都很好。 但我需要能够多次执行任务。但是现在当我运行任务并且另一个用户也运行任务时,这两个任务同时执行。 我需要任务进入队列并且仅在第一个任务完成时执行。 我的设置.py:
BROKER_URL = 'redis://localhost:6379/0'
CELERY_IMPORTS = ("pc.tasks", )
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_RESULT_BACKEND='djcelery.backends.cache:CacheBackend'
tasks.py
from __future__ import absolute_import
from celery.decorators import task
from celery import task, shared_task
from .models import Servicio, Proveedor, Lectura_FTP, Actualizar_Descarga
from .models import Lista_Archivos, Lista_Final, Buscar_Conci
@task
def carga_ftp():
tabla = Proc_Carga()
sp = tabla.carga()
return None
@task
def conci(idprov,pfecha):
conci = Buscar_Conci()
spconc = conci.buscarcon(idprov,pfecha)
我是这样调用我视图中的任务的:
conci.delay(prov,DateV);
如何创建或设置任务的队列列表,并且每个任务仅在之前的任务完成时执行
提前致谢
【问题讨论】:
标签: python django redis celery django-celery