J'utilise le script suivant du tutoriel Twisted (avec une légère modification):consolidations démonisation python tordu et le port
from twisted.application import internet, service
from twisted.internet import reactor, protocol, defer
from twisted.protocols import basic
from twisted.web import client
class FingerProtocol(basic.LineReceiver):
def lineReceived(self, user):
d = self.factory.getUser(user)
def onError(err):
return "Internal server error"
d.addErrback(onError)
def writeResponse(message):
self.transport.write(message + "\r\n")
self.transport.loseConnection()
d.addCallback(writeResponse)
class FingerFactory(protocol.ServerFactory):
protocol = FingerProtocol
def __init__(self, prefix):
self.prefix = prefix
def getUser(self, user):
return client.getPage(self.prefix + user)
application = service.Application('finger', uid=1, gid=1)
factory = FingerFactory(prefix="http://livejournal.com/~")
internet.TCPServer(7979, factory).setServiceParent(
service.IServiceCollection(application))
que je sauve comme finger_daemon.tac
et courir avec
twistd -y finger_daemon.tac \
-l /home/me/twisted/finger.log \
--pidfile=/home/me/twisted/finger.pid
mais bien sûr il ne liera pas à 79, puisque c'est un port privilégié. J'ai essayé aussi de courir avec sudo, pas de différence là-bas.
J'ai alors essayé de changer le port TCPServer
-7979 puis se connecter au démon une fois en cours d'exécution avec
telnet 127.0.0.1 7979
et je reçois l'erreur Connection Refused
. Que se passe-t-il ici spécifiquement? Comment diemonizing est censé fonctionner dans Twisted?
génial qui fait l'affaire! Je me demande pourquoi c'est dans leur tutoriel officiel ... – lollercoaster
aussi important - comment avez-vous vu l'erreur? twistd fonctionne silencieusement pour moi – lollercoaster
Je travaille sur Twisted, donc un lien direct vers le tutoriel qui mentionne cet exemple serait utile :-). – Glyph