gpt4 book ai didi

python - Celery 的类似信号量的机制

转载 作者:太空狗 更新时间:2023-10-29 21:57:31 25 4
gpt4 key购买 nike

我们正在为我们的任务队列开发一个使用 Python + Celery 的分布式应用程序。

我们的应用程序要求我们通过 IMAP(例如:gmail)从远程 ISP 下载电子邮件,我们希望能够并行完成此任务。对于给定的电子邮件帐户,您被授予有限数量的模拟连接,因此我们需要一种方法来自动跟踪所有正在下载的帐户的事件连接。

我已经找到了多个使用 Redis 的 Celery 原子锁示例,但是没有一个可以跟踪像这样的有限资源池,并且所有实现我们自己的尝试都导致难以调试竞争条件,导致我们的锁间歇性地永远不会被释放。

最佳答案

由于 celery 使用 multiprocessing 库处理进程,您应该能够安全地使用进程 multiprocessing.Semaphore([value]) .

您需要预先创建信号量并将其传入,您可以将默认值设置为等于您希望允许的最大并发访问数。然后在您的 IMAP 连接之前获取并在您断开连接后释放。

关于python - Celery 的类似信号量的机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5876635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com