2010-11-18 3 views
1

Я пытаюсь написать приложение с библиотекой twistd, написанную для Python. Файл приложения заканчивается так:завершение приложения twistd в python

завод = protocol.ServerFactory()

factory.protocol = EchoServer

приложение = service.Application ("Эхо")

internet.TCPServer (8001, завод) .setServiceParent (application)

Я хочу запустить что-то до того, как мое приложение завершится (например, закройте файл). Кто-нибудь знает как это сделать? потому что это обработчик событий, и я не знаю, где вызывается функция очистки.

ответ

1

Вам необходимо добавить код startService и stopService методов Service.

Одним из способов было бы что-то вроде этого:

from twisted.application import service 
from twisted.internet import protocol 

class MyService(service.Service): 
    def __init__(self,port=8001): 
    self.port = port 
    def startService(self): 
    self.factory = protocol.ServerFactory() 
    self.factory.protocol = EchoServer 
    from twisted.internet import reactor 
    reactor.callWhenRunning(self.startListening) 
    def startListening(self): 
    from twisted.internet import reactor 
    self.listener = reactor.listenTCP(self.port,self.factory) 
    print "Started listening" 
    def stopService(self): 
    self.listener.stopListening() 
    # Any other tidying 


application = service.Application("Echo") 
MyService().setServiceParent(application) 
Смежные вопросы