Я начинаю свое искривленное приложение с:
application = twisted.application.service.Application('myserv')
my_service = MyService()
my_service.setServiceParent(application)
my_factory = twisted.internet.protocol.ServerFactory()
my_factory.protocol = MyProtocol
twisted.application.internet.TCPServer(port, my_factory).setServiceParent(application)
class MyService:
def startService(self):
#only synchronous code here?
Прежде чем эта служба сможет принимать клиентские tcp-соединения, мне нужно установить соединение с сервером Redis, что включает выполнение асинхронного кода. Я хочу использовать d=txredisapi.Connection()
или, альтернативно, d = yield txredisapi.Connection()
с inlineCallbacks
. Этот отложенный должен срабатывать до того, как служба сможет запуститься (до того, как клиентские TCP-соединения будут приняты). Где лучше всего начать txredisapi.Connection()
? В идеале я хочу поместить его в класс MyService
.