扭曲的UDP服务器 - 守护进程化?

3 投票
2 回答
1668 浏览
提问于 2025-04-16 05:28

我有一个使用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)

撰写回答