python - Django Celery 任务队列

标签 python django redis celery django-celery

我有一个用 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'

任务.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)

我这样调用我 View 中的任务:

conci.delay(prov,DateV);

如何创建或设置一个任务队列列表,并且每个任务仅在前一个任务完成时执行

提前致谢

最佳答案

你可以限制工作人员的任务,因为我假设你一次只需要一名工作人员,所以在调用 djcelery 时只启动一名工作人员。

python manage.py celery worker -B --concurrency=1

关于python - Django Celery 任务队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29567488/

相关文章:

python - 这个 python 脚本会按预期工作吗?我想让它把随机数代入一个等式直到它得到 187.2

python - 如何训练新的 fast-rcnn 图像集

python - 过滤 django 中的组合日期和时间

python - Django 在给定的 url 上调用了错误的函数

.net - 插值字符串 $ 被视为无效字符并返回错误 BC30037 (vb.net)

python - 优胜美地 : Python MySQLlib issue - 'no suitable image found'

python - 删除网页抓取中的换行符

django - 除了 Django 文档之外,还有什么好的 Django 教程?

java - 带有@Cacheable的Spring Data Redis NullPointerException

mongodb - 哪个 nosql 选项相对于存储过程和大型数组?