Python或节点中的异步套接字连接

Python或节点中的异步套接字连接,python,node.js,sockets,asynchronous,tornado,Python,Node.js,Sockets,Asynchronous,Tornado,我正在创建一个基本上与第三方聊天流API(基于套接字)有多个连接的应用程序 其工作方式是:每个用户在我的应用程序上都有一个帐户,在第三方应用程序上都有另一个帐户。他给了我一个第三方聊天应用的访问令牌,我连接到第三方API以流式传输他的聊天。这种情况发生在数百个用户身上 我需要为每个用户创建一个套接字连接池并运行并行线程。我正在使用一个python库(用于该API),并且能够为单个用户实现实时提要。如何在Python或NodeJS中实现异步套接字连接池?我在EC2上有一个Linux微实例,我需要为

我正在创建一个基本上与第三方聊天流API(基于套接字)有多个连接的应用程序

其工作方式是:每个用户在我的应用程序上都有一个帐户,在第三方应用程序上都有另一个帐户。他给了我一个第三方聊天应用的访问令牌,我连接到第三方API以流式传输他的聊天。这种情况发生在数百个用户身上

我需要为每个用户创建一个套接字连接池并运行并行线程。我正在使用一个python库(用于该API),并且能够为单个用户实现实时提要。如何在Python或NodeJS中实现异步套接字连接池?我在EC2上有一个Linux微实例,我需要为1000个用户运行这个应用程序


我正在探索Redis+Tornado来实现这一点。还有更好的选择吗?

< P>这将是一个混乱的问题,也是一个需要考虑的事情。
  • 如果要使用多个线程,请记住,在操作系统允许的情况下,每个CPU只能运行这么多线程,而不是继续
  • 如果要与长轮询进程异步,则会阻止其他客户端处理请求
  • 解决方案

    当您的应用程序绝对需要实时时,我建议使用WebSocket进行服务器-客户端交互

    然后从客户端请求启动单个进程,使用python中的
    multiprocessing
    侦听\轮询流式API。因此,您将为每个客户机创建一个单独的流程

    现在,要使您的
    WebSocketHandler
    和后台API拖缆相互交互,您可以使用Observer模式()通知WebSocket您已从API接收到数据

    确保为每个客户端分配唯一的ID,并确保在使用WebSocket时仅将数据发布到预期的客户端

    编辑:

    网站:

    还有关于龙卷风的问题。它是一个很好的轻量级框架,可以运行几个用户,可能1000个。但是,除此之外,我建议您考虑Django,因为它将使您在生成代码方面更高效,而且随着时间的推移,社区已经开发了很多工具

    数据库:

    如果您需要一个非常快速的无sql数据库,那么Red.is是一个不错的选择,还可以看看mongodb。如果您需要一个多区域数据库,我建议使用Cassandra或CouchDB,因为节点是分区的。下图可能会帮助您更好地决定使用哪个数据库


    所以基本上你的应用程序应该作为客户端和第三方API之间的透明代理?@robertklep。它代表客户端连接到第三方流式API,并过滤一些数据并将其存储在我的数据库中。不允许使用Jquery(客户端)
    基于套接字的
    !所有python MVC都是基于wsgi的。因此,使用分发不是一个好主意。我的意见是:共享组中的用户,将用户端口划分到位置,
    DB==io
    因此需要大量ram进行延时记录,永远不要使用服务器端数据进行比较,使用
    结果