Есть три способа демонизировать проект на Twisted.
1) использование родного демона twistd. По идее - это более "методически грамотный" способ, но в свое время что-то не завелся у меня "в лоб", по этому до сих пор применяю второй.
2) скрестить старый работающий демон с реактором Twisted
Да, procname служит для переименования процесса, о чем писал тут.
3) есть еще правда и python-daemon (PEP-3143), надо бы повнимательней изучить, но думаю что родной twistd оптимальней.
1) использование родного демона twistd. По идее - это более "методически грамотный" способ, но в свое время что-то не завелся у меня "в лоб", по этому до сих пор применяю второй.
2) скрестить старый работающий демон с реактором Twisted
#!/usr/bin/python
import sys
import src.daemon
import procname
class YourServer(twisted.web.server.Site):
pass
class YourDaemon(Daemon):
name = 'yourserverd'
site = None
server = None
#--------------------------------------------------------------------------
def __init__(self):
self.server = YourServer()
Daemon.__init__(self, pidfile='/var/run/%s.pid' % (self.name.lower()) )
procname.setprocname(self.name)
#--------------------------------------------------------------------------
def run(self):
self.server = YourServer()
reactor.listenTCP(self.server.port, self.server)
reactor.run()
if __name__ == '__main__':
daemon = YourDaemon()
daemon.processAction(sys.argv)
Да, procname служит для переименования процесса, о чем писал тут.
3) есть еще правда и python-daemon (PEP-3143), надо бы повнимательней изучить, но думаю что родной twistd оптимальней.
у твистеда же свой лаунчер есть
ОтветитьУдалитьА вариант 1) в тексте никто не заметил? ;-)
ОтветитьУдалить