2

由于某些要求,我一直在管理一个使用 multiprocessing.manager 的程序,但是我们收到了稳定数量的错误,例如超时、无效引用和其他类似错误。

现在我很好奇是否有更发达的 multiprocessing.manager 替代方案,它具有更好的整体可靠性和更少的客户端状态跟踪。

我已经在这个主题上尝试过谷歌,但由于关键字的奇怪组合,我只收到了虚假的结果。

我们通常的用例与此类似:

def connect():
  manager = CustomManager(address=manager_address, authkey=manager_authkey)
  manager.connect()
  session = manager.session()
  return session

connect().some_function()
4

1 回答 1

2

从问题和您的评论来看,如果您想要更可靠的东西来管理流程,那么使用多处理模块有更好的选择。以下是您可能想要探索的两个选项:

齿轮人

这是对Gearman项目的描述。

Gearman 提供了一个通用的应用程序框架,将工作分包给更适合完成工作的其他机器或进程

Instagram 有用 python 编写的工作人员,并使用 Gearman 在后台运行这些工作。您可以在这篇What Powers Instagram帖子的任务队列部分了解它。

Celery:分布式任务队列

Celery是一个基于分布式消息传递的异步任务队列,它专注于实时操作。它在 Django 社区中非常流行。

这两种解决方案都具有很强的可扩展性并且被广泛使用,因此您会发现很多关于如何使用它们的文档和教程。不过他们参与度更高,因此会有更多的初始学习曲线。但我认为,如果您达到了多处理的极限,那么投入时间可能是值得的。

于 2012-12-22T09:03:10.883 回答