Я пишу прокси-сервер tcp с Twisted framework и нуждаюсь в простом отказе при отказе клиента. Если прокси не может подключиться к одному серверу, подключитесь к следующему в списке. Я использовал reactor.connectTCP(host, port, factory)
для прокси-сервера, пока не пришел к этой задаче, но он не выплюнул ошибку, если он не может подключиться. Как я могу поймать, что он не может подключиться и попробовать другой хост, или я должен использовать какой-либо другой метод подключения?Python-скрученный клиентский отказ при отказе
1
A
ответ
0
Вы можете использовать отложенный, чтобы сделать это
class MyClientFactory(ClientFactory):
protocol = ClientProtocol
def __init__(self, request):
self.request = request
self.deferred = defer.Deferred()
def handleReply(self, command, reply):
# Handle the reply
self.deferred.callback(0)
def clientConnectionFailed(self, connector, reason):
self.deferred.errback(reason)
def send(_, host, port, msg):
factory = MyClientFactory(msg)
reactor.connectTCP(host, port, factory)
return factory.deferred
d = Deferred()
d.addErrback(send, host1, port1, msg1)
d.addErrback(send, host2, port2, msg2)
# ...
d.addBoth(lambda _: print "finished")
Это вызовет следующий errback если первые один сбой, в противном случае Гота функция печати.
Смежные вопросы
- 1. WCF basicHttpBinding: Откат при отказе ответа на клиентский компьютер
- 2. C++ dynamic_cast поведение при отказе при отказе
- 3. svcutil.exe клиентский прокси и контракт на отказ
- 4. Предотвращать оповещение при отказе
- 5. Выполнение специализированных функций при отказе Scalatest
- 6. Erlang Сбой при успешном отказе
- 7. Форма перенаправления при отказе проверки
- 8. Маршрутизация Rails при отказе проверки?
- 9. СУБД для использования при отказе
- 10. Ошибка при отказе Postgres Ошибка
- 11. Перенаправление на отказ | htaccess
- 12. Отказ при прокрутке
- 13. Отказ при запуске диаспоры
- 14. Влияние на отказ сертификата SHA1
- 15. Доступ к функции last_error при отказе отложенных заданий
- 16. Weblogic 10.3.1 дает предупреждение об отказе в зависимости от отказа при публикации кода
- 17. Клиентский винт зависает при ответе
- 18. Перенаправление при отказе в диалоговом окне подтверждения
- 19. Использовать собственный маршрут при отказе проверки модели
- 20. Ошибка при отказе OpenSV Android CamShift
- 21. выделенное поле ввода при отказе проверки
- 22. Как вызвать метод при отказе определенной проверки?
- 23. Ошибки переходного процесса при отказе SQL Server
- 24. Angular.JS multiple $ http post: отмена при отказе
- 25. ColorBox - всплывающее окно закрывается при отказе проверки
- 26. Связанные обещания, не проходящие при отказе
- 27. Множественные обновления MySQL - откат при отказе
- 28. Python многопроцессорный сбой при отказе с классом
- 29. Значение DataGridView по умолчанию при отказе проверки
- 30. Получите обратный вызов (backend) при отказе подтверждения
Извините, наконец, нашел ответ: http://stackoverflow.com/questions/14255289/twisted-reconnectingclientfactory-connection-to-different-servers –