由于某些要求,我一直在管理一个使用multiprocessing.manager的程序,但是我们已经收到了大量错误,例如超时,无效引用和其他类似错误。
现在我很好奇是否有一个更加发达的multiprocessing.manager替代方案,它在客户端具有更好的整体可靠性和更少的状态跟踪。
我已经尝试了谷歌这个主题,但由于关键字的奇怪组合,我只会收到虚假的结果。
我们通常的用例类似于:
def connect():
manager = CustomManager(address=manager_address, authkey=manager_authkey)
manager.connect()
session = manager.session()
return session
connect().some_function()
答案 0 :(得分:2)
根据问题和您的意见判断,如果您想要更加可靠的东西来管理流程,那么使用多处理模块有更好的选择。以下是您可能想要探索的两个选项:
<强>的Gearman 强>
这是对Gearman项目的描述。
Gearman提供了一个通用的应用程序框架来将工作分配到 其他更适合做这项工作的机器或工艺
Instagram的工作人员用python编写,并使用Gearman在后台运行这些工作。您可以在此What Powers Instagram帖子的任务队列部分阅读相关内容。
Celery:分布式任务队列
Celery是一个基于分布式消息传递的异步任务队列,它专注于实时操作。它在Django社区非常受欢迎。
这两种解决方案都具有很高的可扩展性,并且广泛使用,因此您可以找到大量有关如何使用它们的文档和教程。他们更多参与,因此将有更多的初始学习曲线。但是,如果你达到多处理的极限,我认为值得投入时间。