当我使用Celery和Redis后端时,有没有一种方法可以限制队列大小?
类似于rabbitmq中预声明队列的x-max-length。
这可能有点瑕疵,但您可以尝试在调用任务时使用 Redis 锁定。这样,如果另一个进程想要调用任务,它必须等待 Redis 锁被释放(当任务完成运行或超时到达时会发生这种情况)。这将防止过多的任务被添加到队列中。
with r.lock(some_lock_name, blocking_timeout=10):
your_celery_task.delay()
我认为你正在寻找Celery中的预取限制。请查看文档。