我想在同一个TCPServer中运行一个tornado.web.Application和一个IOLoop。我想使用TCPServer来处理工控机。我用通常的方式初始化每一件事:
tcpServer = TCPServer()
tcpServer.listen(8888,address="127.0.0.1")
tornado.options.parse_command_line()
app=Application()
server=tornado.httpserver.HTTPServer(app)
server.listen(8000)
tornado.ioloop.IOLoop.current().start()如何在tornado.web.Application中调用TCPServer方法?
发布于 2015-12-10 23:57:12
您可以将TCPServer实例传递给应用程序(甚至可以在其中创建它)。下面是处理程序的简单示例:
import tornado.ioloop
import tornado.httpserver
import tornado.options
from tornado.web import RequestHandler, Application
from tornado.tcpserver import TCPServer
tcpServer = TCPServer()
tcpServer.listen(8888,address="127.0.0.1")
class MainHandler(RequestHandler):
def get(self):
if self.request.uri == '/stop':
self.write("tcpserver stopped")
self.application.tcp_server.stop()
else:
self.write("go to /stop tcpserver")
class CustomApp(Application):
def __init__(self, tcp_server, *args, **kwargs):
super(CustomApp, self).__init__(*args, **kwargs)
self.tcp_server = tcp_server
# self.tcp_server.some_method...
self.add_handlers(r"^.*$", [(r"/.*", MainHandler)])
tornado.options.parse_command_line()
app=CustomApp(tcpServer)
server=tornado.httpserver.HTTPServer(app)
server.listen(8000)
tornado.ioloop.IOLoop.current().start()如果需要通过应用程序中的TCP调用服务器,而不是直接调用逻辑,则可以使用TCPClient。
https://stackoverflow.com/questions/34212776
复制相似问题