最终决定使用Tornado作为WebSocket服务器,但我有一个关于它如何实现的问题。
在学习了创建工作服务器的基本教程之后,我最终得到了这样的内容:#!/usr/bin/env python
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from tornado.web import Application
from tornado.websocket import WebSocketHandler
class Handler(WebSocketHandler):
def open(self):
print "New connection opened."
def on_message(self, message):
print message
def on_close(self):
print "Connection closed."
print "Server started."
HTTPServer(Application([("/", Handler)])).listen(1024)
IOLoop.instance().start()
它工作得很好,但我想知道如果其他模块(龙卷风。httpserver,龙卷风。Ioloop和tornado.web)实际上需要运行服务器。
拥有它们并不是一个大问题,但我只是想确保没有更好的方法来做它们所做的任何事情(我还没有涉及到这些模块,到目前为止)。
-
龙卷风。httpserver:
- 一个非阻塞、单线程的 HTTP服务器。典型的应用程序很少与HTTPServer类直接交互。 HTTPServer是一个非常基本的连接处理程序。除了解析HTTP请求正文和报头之外,在HTTPServer中实现的唯一HTTP语义是HTTP/1.1保持连接。
-
龙卷风。ioloop:
- 非阻塞套接字的I/O事件循环。 因此,ioloop可以用于设置响应的超时。
一般来说,RequestHandler和tornado中的其他方法不是线程安全的。特别是,write()、finish()和flush()等方法只能在主线程中调用。如果使用多个线程,使用IOLoop是很重要的。add_callback在完成请求之前将控制权转移回主线程。 -
龙卷风。网络:
- 提供RequestHandler和Application类
- 帮助使用额外的工具和优化,以利用龙卷风非阻塞web服务器和工具的优势。
- 所以,这些是这个模块的规定:
- 入口点:用于子类初始化的钩子。输入>输出
- <
- 饼干/gh>
我希望,这将涵盖您留下的模块。
是的,它们是必需的,因为您正在使用来自引用的每个模块/包的每个导入。如果你在源代码的顶部引用了一些东西,但在下面的代码中再也没有使用过,那么你当然不需要它们,但在这种情况下,你使用了你的imports