Скрученные сервисы в существующем реакторе

#twisted

#скрученные

Вопрос:

Я пытаюсь объединить две существующие кодовые базы, которые используют twisted по-разному, и я не совсем уверен, с чего начать.

В одном случае у меня есть приложение kivy, интегрированное со скрученным реактором более или менее так, как описано здесь. По сути, все приложение представляет собой класс, и методы класса возвращают отсрочки по мере необходимости. Это работает нормально и на удивление хорошо. Я использую Kivy здесь, потому что он предоставляет графический интерфейс, который мне нужен. Приложение запускается с помощью MyApplication.run(), который является Kivy, и который внутренне создает и запускает twisted reactor.

В другом (чисто скрученном) случае у меня есть коллекция скрученных сервисов ( t.a.service.Service подклассов), которые я объединяю в MainApplication ( t.a.service.Application ), используя someService.setParent(mainApplication) . Это выполняется с помощью t.a.app.startApplication и reactor.run() . Это тоже хорошо работает.

В обоих случаях запуск приложения приводит к тому, что управление полностью переходит к реактору, как и ожидалось.

Что я хотел бы сделать, так это повторно использовать некоторые из этих скрученных сервисов в моем приложении Kivy. Кажется, я могу получить доступ к реактору из приложения kivy, поскольку такие вещи, как reactor.callLater(), работают должным образом.

  • Есть ли какой-нибудь способ, которым я могу также выполнить reactor.startService(SomeService)?
  • В настоящее время я использую self.parent.getServiceNamed("someService") приложение на основе twisted Service для связи между службами. Как это можно сделать при использовании альтернативного подхода.

Любой совет, с чего начать поиск, был бы полезен.