2010-10-14 6 views
2

J'ai le serveur UDP suivant à l'aide Twisted:Twisted UDP Server - démoniser?

# 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() 

Je voudrais être en mesure de daemonize cela, donc de ce que j'ai lu que je devrais faire quelque chose avec un fichier .tac que je peux commencer par " twistd -y my_udp_server_file.tac "- le problème est que je ne trouve pas de documentation sur la façon de le faire avec ce type d'installation. Tout ce que je peux trouver est des exemples sur la façon de démoniser de simples serveurs d'écho TCP (avec un fichier .tac, c'est-à-dire) - J'ai besoin d'un serveur UDP multi-thread comme celui que j'ai.

Toute direction serait grandement appréciée.

Répondre

3

Essayez ceci:

import twisted.application 
application = twisted.application.service.Application("Scotty's UDP server") 
twisted.application.internet.UDPServer(PORT, BaseThreadedUDPServer()).setServiceParent(application) 
+0

Merci. C'est ce que je cherchais. – Scott

3

Le code de démonition dans twistd ne se soucie pas si vous fournissez UDP ou TCP. La façon dont vous démonisez un serveur UDP est identique à la façon dont vous démonisez un serveur TCP. Vous devriez pouvoir utiliser le serveur TCP echo comme exemple pour écrire un fichier .tac pour votre serveur UDP.