【发布时间】:2016-10-22 22:36:29
【问题描述】:
我已将一个 API 与我的 Django 网站集成。对于通过 API 完成的订单,需要发送和接收 5 个请求和响应。最后 2 个请求对于按顺序发送并不是非常重要。我已将这 2 个请求分配给 celery 任务。
场景:我发出一个请求来处理 10 个订单,因此每个订单有 5 个请求,其中 2 个分配给 celery 任务。因此 celery 总共有 10 个任务将由经纪人分配。这些任务中的每一个都有 2 个请求。
结果:在进行 API 调用时,Celery 并未分配所有 10 个任务,因此对于每组 10 个订单,完成的订单是 5 个或 4 个或 6 个,依此类推。每次有 2 或 3 个任务未处理。我不确定是什么导致代理没有分配任务。
我正在使用 delay() 命令来调用任务。我的 task.py 文件看起来有点像这样
from celery import shared_task
from celery.utils.log import get_task_logger
logger = get_task_logger(__name__)
@shared_task
def process_jobs(client_obj, job, **kwargs):
# do task related work
对该任务的调用如下所示
process_jobs.delay(self, job, **response_arg)
process_jobs 包含 2 个 HTTP 请求,这些请求一个接一个地按顺序发出,响应保存在数据库中。
请指教
【问题讨论】:
标签: python django celery django-celery celery-task