如何监听 Tornado 循环中 stdin 上发生的事件?
特别是,在龙卷风系统中,我想从标准输入中读取数据,对其做出反应,并在标准输入关闭时终止。同时,Tornado Web 服务也在同一进程上运行。
在寻找这个时,我能找到的最相似的是处理外部生成的进程的流。然而,这不是我想要的:我想处理的 I/O 流current进程,即具有 Web 服务器的进程。
从结构上来说,我的服务器差不多你好世界龙卷风,所以我们可以以此为基础来举例。我只需要添加一个标准输入处理程序。
您可以使用add_handler
方法上的IOLoop
监视事件的实例stdin
.
这是一个最小的工作示例:
from tornado.ioloop import IOLoop
from tornado.web import Application, RequestHandler
import sys
class MainHandler(RequestHandler):
def get(self):
self.finish("foo")
application = Application([
(r"/", MainHandler),
])
def on_stdin(fd, events):
content = fd.readline()
print "received: %s" % content
if __name__ == "__main__":
application.listen(8888)
IOLoop.instance().add_handler(sys.stdin, on_stdin, IOLoop.READ)
IOLoop.instance().start()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)