【发布时间】:2020-08-30 19:36:09
【问题描述】:
我使用 django、celery 和 redis 异步启动任务。
# tasks.py
@shared_task
def my_task():
# Do stuff of task 1
return True
# Somewhere in test1.py
my_task.delay()
# Few milli seconds later in test2.py
my_task.delay()
使用该配置,my_task 在 2 个不同的文件上启动 2 次。所以它们几乎同时在不同的线程上执行。
我需要将这 2 个任务一一执行。如果 my_task #1 正在执行并且另一个 my_task #2 已启动,我需要 my_task #2 等待 #1 结束后再执行。
我不想只使用一个线程将参数传递给 celery celery worker --concurrency=1
我的 settings.py 中的 celery 配置是基本的:
# settings.py
CELERY_BROKER_URL = 'redis://localhost:6379/0'
我发现很多资源都在谈论这个主题,但我真的不明白如何实现我的目标
【问题讨论】:
标签: python django multithreading redis celery