Python的asyncio的高可用性

时间:2015-03-25 09:47:45

标签: python python-3.x asynchronous python-asyncio

我正在尝试使用Python的asyncio模块创建一个异步应用程序。但是,我在文档中找到的所有实现都基于单个事件循环。

有没有办法启动运行相同应用程序的多个事件循环,所以我可以实现高可用性和容错?换句话说,我想通过插入新的节点来扩展我的应用程序,这些新节点将共享协同程序在负载均衡器后面的执行。

我理解异步编程和线程安全之间存在一个固有的问题,也许我想到的甚至是不可能的。如果是这样,如何在异步架构上避免这种SPOF?

2 个答案:

答案 0 :(得分:3)

处理此问题的标准方法是启动多个服务器进程(每个进程都有自己的事件循环),前面有一个负载均衡器。每个此类进程通常不能使用多个CPU内核,因此您可能希望拥有与内核一样多的进程。

答案 1 :(得分:0)

我以前做过这件事。我甚至编写代码来监视我生成的进程。但事实证明,Python& asyncio本身相当稳定,我从来没有看到一个停止整个事件循环的严重错误。因此,我不建议仅为了实现高可用性而推出多个流程。

如果您感兴趣,请输入代码:https://github.com/l04m33/shinpachi

您可以查看shinpachi/__init__.pyshinpachi/processes.py