首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对象与IOLoop之间的通信

对象与IOLoop之间的通信
EN

Stack Overflow用户
提问于 2015-12-10 22:18:56
回答 1查看 162关注 0票数 0

我想在同一个TCPServer中运行一个tornado.web.Application和一个IOLoop。我想使用TCPServer来处理工控机。我用通常的方式初始化每一件事:

代码语言:javascript
复制
   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方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-10 23:57:12

您可以将TCPServer实例传递给应用程序(甚至可以在其中创建它)。下面是处理程序的简单示例:

代码语言:javascript
复制
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。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34212776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档