trb*_*bck 8 python multithreading twisted websocket scrapy
我想编写一个处理Websocket客户端的服务器,同时通过sqlalchemy选择mysql并同时抓取几个网站(scrapy).必须计算收到的数据,保存到数据库,然后发送到websocket客户端.
我的问题是,从逻辑的角度来看,如何在Python中完成这项工作.我如何设置代码结构以及哪些模块是此工作的最佳解决方案?目前我确信使用扭曲的线程,其中刮擦和选择的东西正在运行.但这可以更轻松地完成吗?我只找到简单的扭曲的例子,但显然这似乎是一个更复杂的工作.有类似的例子吗?我该如何开始?
Cyclone是一个基于Twisted的"网络工具包",基于/类似于facebook/friendfeed的Tornado服务器,包含对WebSockets的支持:https://github.com/fiorix/cyclone/blob/master/cyclone/web.py#L908
这是示例代码:
这是使用txwebsocket的一个例子:
使用带有Twisted的SQLAlchemy时可能会出现问题; 从我所读到的,它们不能很好地协同工作(来源).你嫁给了SQLA,还是另一个更兼容的OR/M就足够了?
一些扭曲友好的OR/Ms包括Storm(一个fork)和Twistar,你总是可以回到Twisted的核心db抽象库twisted.enterprise.adbapi.也有其他产品,如异步友好DB库txMySQL,txMongo和txRedis和佩斯利(CouchDB的).
您可以想象使用Cyclone(或txwebsockets)和Scrapy作为同一MultiService的子服务,在不同的端口上运行,但打包在同一个Application实例中.服务可以通过父服务或某种RPC机制(如JSONRPC,Perspective Broker,AMP,XML-RPC(2)等)进行通信,或者您可以从scrapy服务写入数据库并使用websockets从中读取数据.Redis对于这个IMO来说会很棒.
归档时间: |
|
查看次数: |
2489 次 |
最近记录: |