使用Redis和ARQ限制并发任务数

时间:2019-09-30 17:45:48

标签: python redis arq

我想通过arq's功能将某些任务分配给使用Redis队列的任意数量的连接“工作者”。我能够提交异步任务,但是每个工作人员一次只能从中央队列中检索一个任务,这一点很重要。它应具有可伸缩性,以允许Redis池中容纳所需的尽可能多的工作程序,但每个工作程序执行的任务不得超过一个。

我似乎遇到的问题是,当运行多个工作程序时,似乎其中一个或两者都将占用所有可用任务并一次开始执行它们,但不会分布在工人中。

对于工人,我在两个不同的屏幕会话中运行命令arq tasks.WorkerSettings

class WorkerSettings:
    functions = [do_work]
    job_timeout = td(hours=1)
    max_jobs = 1
    on_shutdown = shutdown
    on_startup = startup
    queue_read_limit = 1

根据文档,queue_read_limitmax_jobs的组合应该可以完成我想要的操作,但是要运行多个工作程序(在提交任务)不会导致顺序执行分布式任务。

0 个答案:

没有答案
相关问题