Comment exécuter une application twistée via Python (au lieu de via Twisted)?
je travaille mon chemin à travers L'apprentissage tordu, et ont trébuché sur quelque chose que je ne suis pas sûr d'aimer terriblement - le "Prompt de commande tordu". Je tripote avec Twisted sur ma machine Windows, et j'ai essayé de lancer l'exemple "Chat":
from twisted.protocols import basic
class MyChat(basic.LineReceiver):
def connectionMade(self):
print "Got new client!"
self.factory.clients.append(self)
def connectionLost(self, reason):
print "Lost a client!"
self.factory.clients.remove(self)
def lineReceived(self, line):
print "received", repr(line)
for c in self.factory.clients:
c.message(line)
def message(self, message):
self.transport.write(message + 'n')
from twisted.internet import protocol
from twisted.application import service, internet
factory = protocol.ServerFactory()
factory.protocol = MyChat
factory.clients = []
application = service.Application("chatserver")
internet.TCPServer(1025, factory).setServiceParent(application)
Cependant, pour exécuter cette application comme un serveur tordu, je dois l'exécuter via l'invite de commande "Twisted Command Prompt", avec la commande:
twistd -y chatserver.py
y a-t-il un moyen de changer le code (définir la configuration torsadée) paramètres, etc) pour que je puisse simplement l'exécuter via:
python chatserver.py
j'ai cherché sur Google, mais les termes de recherche semblent être trop vagues pour retourner des réponses significatives.
Merci.
5 réponses
je ne sais pas si c'est la meilleure façon de le faire, mais ce que je fais est à la place de:
application = service.Application("chatserver")
internet.TCPServer(1025, factory).setServiceParent(application)
vous pouvez faire:
from twisted.internet import reactor
reactor.listenTCP(1025, factory)
reactor.run()
Sumarized si vous voulez avoir les deux options (twistd et python):
if __name__ == '__main__':
from twisted.internet import reactor
reactor.listenTCP(1025, factory)
reactor.run()
else:
application = service.Application("chatserver")
internet.TCPServer(1025, factory).setServiceParent(application)
j'Espère que ça aide!
ne confondez pas" tordu "avec"twistd
". Lorsque vous utilisez "twistd
", vous lancer le programme avec Python. "twistd
" est un programme Python qui, entre autres choses, peut charger une application à partir d'un .tac
fichier (que vous êtes en train de faire ici).
le" Twisted Command Prompt " est un utilitaire fourni par l'installateur Twisted pour aider les gens sur Windows. Tout c'est fait, c'est la configuration de %PATH%
pour inclure le répertoire contenant les "twistd
" du programme. Vous pouvez exécuter twistd à partir d'une invite de commande normale si vous définissez correctement votre %PATH% ou l'invoquez avec le chemin complet.
si vous n'êtes pas satisfait de cela, vous pouvez peut-être élargir votre question pour inclure une description des problèmes que vous rencontrez en utilisant "twistd
".
Sur windows, vous pouvez créer .bat file avec votre commande, utilisez full paths, puis cliquez dessus pour démarrer.
Par exemple j'utilise:
runfileserver.bat:
C:\program_files\python26\Scripts\twistd.py -y C:\source\python\twisted\fileserver.tac
peut-être un de run
ou runApp
tordu.script.twistd les modules fonctionneront pour vous. S'il vous plaît laissez-moi savoir si il le fait, il sera agréable de savoir!
Je n'ai pas utilisé twisted moi-même. Cependant, vous pouvez essayer de voir si le twistd est un fichier python lui-même. Je suppose qu'il s'agit simplement de gérer le chargement des bibliothèques déformées appropriées à partir du bon chemin.