【发布时间】:2018-05-04 10:02:13
【问题描述】:
我希望我的 django 应用程序使用 TCP/IP 套接字与远程计算机进行通信,并且我希望该套接字始终可用。我想使用 tornado 库。由于我只熟悉编写视图和模型等,我不完全确定将其放入我的代码库的哪个位置。
我正在考虑编写一个管理命令来运行龙卷风的服务器(请参阅http://tornado.readthedocs.io/en/latest/tcpserver.html),但是一旦管理命令退出,我怎么能在我的服务器上调用 .stop() 呢?我不希望它产生任何不会在我的管理命令退出时退出的线程,或者最终打开多个套接字,因为我只想要一个。
当然,我还希望侦听器驻留在我的 django 程序中的某个位置并可以访问它,而不仅仅是在管理命令代码中。我正在考虑从 django 的设置中导入一个类。
我的想法是正确的,还是有其他更好的方法?
编辑:至于我为什么要这样做:
我有一个我想与之通信的微控制器,我不想在它上面实现/解析 HTTP,我还想定期发送一些连接处于活动状态的指示,而 HTTP 没有似乎是要走的路
【问题讨论】:
-
你没有提到你到底想要做什么。为什么需要“使用 TCP/IP 套接字与远程计算机通信”?
-
@xyres 用解释编辑了我的原始问题
-
好的,但是为什么你的管理命令存在时要停止服务器呢?您不想始终打开持久的 TCP 连接吗?我的意思是,如果您只想在命令运行时打开 TCP 连接,那么您就不需要 Tornado。您可以在管理命令文件中使用
socket库创建一个 TCP 套接字。因此,当您的管理命令退出时,套接字也将关闭。 -
@xyres 因为我想用 systemd 之类的东西来管理我的管理命令,这意味着如果它正在运行,我想打开一个 TCP 连接。
标签: python django sockets tcp tornado