【问题标题】:Double queue synchronization and performance双队列同步和性能
【发布时间】:2023-11-26 01:10:01
【问题描述】:

我有一个使用 AMQP 的后台作业处理系统。多个服务器正在使用同一队列中的作业。这些服务器中的每一个都运行 4 个工作进程。到目前为止一切顺利。

现在要处理的作业本身需要一些 IPC,为了保持一致,我再次使用 AMQP 队列(当然不同的队列)。这个想法是每个工人都将拥有它的 IPC 对应物,如下所示:

                      /    IPC queue   \
Main queue ---> * W1 /                  \ W1-counterpart
              > * W2 /                  \ W2-counterpart
              > * W3 /                  \ W3-counterpart
              > * W4 /                  \ W4-counterpart
                     \ IPC Result queue /

对方可以独立操作,所以如果 W3-counterpart 为 W1 处理工作就可以了。我注意到,问题是该系统似乎并没有一直被充分利用。即使主队列充满了作业,似乎也只有 2 个被同时处理,在不同的时刻,所有 4 个都被使用。为什么?为什么这不是一直有效?

【问题讨论】:

    标签: python concurrency synchronization queue amqp


    【解决方案1】:

    当您询问传入队列是否为空/非空时,我建议添加一些调试打印或类似结果。

    【讨论】:

    • 我不明白,我能用这个实现/获得什么?