Python ritorto Daemon
-
30-09-2019 - |
Domanda
Ho scritto un semplice server contorto -
from twisted.internet import reactor
from twisted.internet import protocol
from twisted.web import server, resource
from twisted.internet import reactor
class Index(resource.Resource):
isLeaf = True
def render_GET(self, request):
args = request.args
print 'Args: %s' %(repr(args))
print 'Serving on PORT: 8090'
site = server.Site(Index())
reactor.listenTCP(8090, site)
reactor.run()
Questo funziona bene su 127.0.0.1:8090
. Nota This viene eseguito in terminale (primo piano), quando faccio la corsa processo in background utilizzando nohup
& ctrl+Z
. il server non risponde alle richieste. Cosa devo fare per demonizzare questo server contorto
Soluzione
Come nmichael e Rakis già accennato, dopo "Ctrl + Z" tipo "bg" per riprendere processo sospeso come processo in background.
Per eseguire direttamente come processo in background, tipo
python myserver.py &
Per eseguire direttamente come processo in background che non si fermerà quando si logout, tipo
nohup python myserver.py &
Si noti inoltre che nohup
, non è vero deamonization. Vedere le differenze qui: Qual è la differenza tra nohup e un demone ? a>
Se si vuole veramente deamonize server Contorto, l'opzione migliore è quella di utilizzare twistd
, come ha risposto Mark Loeser.
Altri suggerimenti
mi consiglia di guardare in twistd. In questo modo non c'è bisogno di preoccuparsi di gestire una delle start up, la gestione dei file pid, ecc La documentazione sul loro sito è abbastanza buona: http://twistedmatrix.com/documents/current/core/howto/basics.html . Controllare anche http://twistedmatrix.com/documents/current/core/howto/tap .html per come implementare il file dell'applicazione.