跳转到主要内容

Python中的快速且可靠的分布式系统

项目描述

PyPI

🌀 门户

Python中的快速且可靠的分布式系统。

功能

  • 📡 通信: 门户允许您将函数绑定到Server,并从一个或多个Client中调用它们。通过Future对象等待结果。客户端可以自动恢复损坏的连接。
  • 🚀 性能: 优化吞吐量和延迟。数组数据通过零拷贝序列化和反序列化,以接近硬件极限的吞吐量。
  • 🤸 灵活性: 函数输入和输出可以是嵌套字典和数字、字符串、字节、None值以及Numpy数组的列表。字节允许应用程序选择自己的序列化,例如pickle
  • 🚨 错误处理: 提供了可以被父进程可靠杀死的ProcessThread对象。线程中的未处理异常会停止程序。错误文件可以用于停止分布式系统。
  • 📦 请求批处理: 使用BatchServer收集多个传入请求,并一次性处理它们,例如用于AI推理服务器。批处理和调度在一个单独的进程中发生,以释放GIL。
  • 正确性: 覆盖了超过100个针对常见用途和边缘情况的单元测试,并用于大型分布式AI系统。

安装

pip install portal

示例

此示例使用子进程在同一Python程序中运行服务器和客户端,但它们也可以是运行在不同机器上的单独Python脚本。

def server():
  import portal
  server = portal.Server(2222)
  server.bind('add', lambda x, y: x + y)
  server.bind('greet', lambda msg: print('Message from client:', msg))
  server.start()

def client():
  import portal
  client = portal.Client('localhost', 2222)
  future = client.add(12, 42)
  result = future.result()
  print(result)  # 54
  client.greet('Hello World')

if __name__ == '__main__':
  import portal
  server_proc = portal.Process(server, start=True)
  client_proc = portal.Process(client, start=True)
  client_proc.join()
  server_proc.kill()
  print('Done')

问题

请为每个问题打开一个单独的GitHub问题

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

portal-3.5.0.tar.gz (27.2 kB 查看哈希值)

上传于

由以下支持