Python:设计事件驱动服务器的方法

时间:2016-10-21 11:41:31

标签: python sockets networking zeromq

我正在实现一个如下工作的服务器:

  • AddUser(content) - 将用户添加到服务器,使用用户ID进行响应
  • OnRegister(UserID,Connection) - 将服务器的客户端注册到特定的UserID
  • OnUserChange(UserID) - 通知已注册的客户(通过他们注册的连接)(普通客户无法访问)

所以例如:
第一个部分:

  • 客户端添加用户(使用AddUser)
  • 服务器生成用户ID“54”,将注册任务排队等待以后(因为注册过程很慢),然后用用户ID进行响应

第二部分:

  • 客户注册用户ID:'54'和连接“127.0.0.1:4334”(它的发送方式尚未定义)
  • 客户端侦听127.0.0.1:4334(对于服务器的响应)
  • 服务器将用户ID注册到客户端的连接(同时它可以获得更多请求)
  • 通过异步的其他套接字向服务器通知用户状态更改
  • 服务器向所有已注册的客户端发送响应(通知状态更改)

环境是Linux,延迟应该很小,数据传输大小并不重要。

问题是这个特定例程的最佳方法是什么?

我已经考虑了三种方法:

  • 使用基于连接的反应器(当每个连接映射到给定用户ID,但“用户更改通知”的连接除外)
  • 为客户端实现Rest API(使用flask)并为用户更改实现不同的通知
  • 使用基于连接到一组用户的频道的Pub-Sub模式(因此客户端首先发布它所订阅的用户,服务器通过这些用户ID响应(发布)到客户端)

无论如何,我很高兴听到你对此的建议,也许是一个更好的方法来解决这个问题。

0 个答案:

没有答案