我有以下使用Twisted的UDP服务器:
# init the thread capability
threadable.init(1)
# set the thread pool size
reactor.suggestThreadPoolSize(32)
class BaseThreadedUDPServer(DatagramProtocol):
def datagramReceived(self, datagram, (host, port)):
#do some stuff here...
def main():
reactor.listenUDP(PORT, BaseThreadedUDPServer())
reactor.run()
if __name__ == '__main__':
main()
我希望能够守护这个,所以从我读过的内容我应该用.tac文件做一些事我可以用“twistd -y my_udp_server_file.tac”开头 - 问题是我不能找到有关如何使用此类设置执行此操作的任何文档。我所能找到的就是如何守护简单的TCP echo服务器(带有.tac文件)的例子 - 我需要一个像我一样的多线程UDP服务器。
任何方向都将不胜感激。
答案 0 :(得分:3)
twistd
中的守护程序代码并不关心您是否正在提供UDP或TCP。守护UDP服务器的方式与守护TCP服务器的方式相同。您应该能够以TCP echo服务器为例为UDP服务器编写.tac文件。
答案 1 :(得分:3)
试试这个:
import twisted.application
application = twisted.application.service.Application("Scotty's UDP server")
twisted.application.internet.UDPServer(PORT, BaseThreadedUDPServer()).setServiceParent(application)