Глядя на это еще немного, я думаю, что нашел решение, хотя, надеюсь, есть лучший способ; это кажется странным.
Twisted имеет класс ClientCreator
, который используется для создания простых одноразовых соединений. Теоретически он делает то, что я хочу; подключается и возвращает Deferred
, который срабатывает, когда соединение установлено. Однако я не думал, что смогу использовать это, поскольку потеряю способность передавать аргументы в конструктор протокола и, следовательно, не смогу совместно использовать состояние между соединениями.
Однако я только что понял, что конструктор ClientFactory
принимает *args
для передачи в конструктор протокола. Или, по крайней мере, это выглядит так; для этого практически нет документации. В этом случае я могу дать ссылку на мою фабрику (или что-то еще, если фабрика больше не нужна). И я получаю обратно Deferred
, который срабатывает, когда соединение установлено.