当我使用Redis后端运行Celery时,是否有办法限制队列大小?rabbitmq的队列预声明中类似于x-max-length的内容
gmol16391#
据我所知,这是不可能的与Redis作为后端。
ckocjqey2#
我想你正在寻找celery 的预取限制。看看它的文档。
xqk2d5yq3#
这可能有点笨拙,但是你可以尝试在调用任务时使用Redis锁。这样,如果另一个进程想要调用任务,它就必须等待Redis锁被释放(这会发生在任务运行完成或超时时)。这将防止太多的任务被添加到队列中
with r.lock(some_lock_name, blocking_timeout=10): your_celery_task.delay()
3条答案
按热度按时间gmol16391#
据我所知,这是不可能的与Redis作为后端。
ckocjqey2#
我想你正在寻找celery 的预取限制。看看它的文档。
xqk2d5yq3#
这可能有点笨拙,但是你可以尝试在调用任务时使用Redis锁。这样,如果另一个进程想要调用任务,它就必须等待Redis锁被释放(这会发生在任务运行完成或超时时)。这将防止太多的任务被添加到队列中