扭曲的UDP服务器 - 守护进程化?
我有一个使用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回显服务器变成后台进程的例子(也是用.tac文件的)——但我需要的是像我现在这个一样的多线程UDP服务器。
如果能给我一些指引,我将非常感激。
2 个回答
3
twistd
中的守护进程代码不管你是在提供UDP服务还是TCP服务。把一个UDP服务器变成守护进程的方法和把一个TCP服务器变成守护进程的方法是一样的。你可以用TCP回声服务器作为例子,来为你的UDP服务器写一个.tac文件。
3
试试这个:
import twisted.application
application = twisted.application.service.Application("Scotty's UDP server")
twisted.application.internet.UDPServer(PORT, BaseThreadedUDPServer()).setServiceParent(application)