gevent + tornado 可以一个做底层信息采集 ,另外一个当作 web 服务器吗?

2015-08-27 15:44:10 +08:00
 sbmzhcn
现在有一个项目,使用是 tcp 通信,采集数据,用的是 socket ,数据采集好后保存到数据库中。 但需要做一个网页端的界面,可以直接做个网页从数据库中读取数据就行,这是一个方法。

能不能把 http 服务器与 socket 采集程序集成到一起。

socket 用 gevent 端口 1111
tornado 当作 http 服务器 端口 2222

请问如果这样操作怎么弄,查了相关文档也没有头绪。
2803 次点击
所在节点    Python
7 条回复
yuelang85
2015-08-27 16:25:23 +08:00
可以的。

首先你查下 tornado on gevent 。也就是 tornado 架设到 gevent 上, gevent 提供高并发支持。

然后在 gevent 启动 web 服务主循环之前,用 threading (其实是 gevent monkey patch 过的多线程)启动一个 socket 服务的线程。

这样就可以同时监听两个端口,使用两个服务了
kier
2015-08-27 16:28:27 +08:00
直接用 tornado 就可以啊,没必要再用 gevent ,记住, tornado 不只是一个 web 框架
sbmzhcn
2015-08-27 17:18:36 +08:00
一个没有问题,我知道。我问的最主要的问题,是怎么集成到一块。 tcp server 和 http server 可以互相通信,比如一些变量可以互相使用。
lovedboy
2015-08-27 17:38:53 +08:00
@kier tornado 的 yield 或者 callback 太难写。。 233333333
mengzhuo
2015-08-27 18:06:46 +08:00
数据都落地了,再开一个程序取出来
非要两程序在同一个进程的话……
可以共享一些全局变量(我司不少内部工具都是这德行)
zsmjcnm
2015-08-27 22:38:51 +08:00
233333333
zhouquanbest
2015-08-28 11:04:27 +08:00
完全可以只用 Tornado
如果用 py3 Tornado 写起来会舒服很多 至少不用 raise gen.Return ()了 可以直接 return

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/216407

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX