У меня возникли проблемы с twisted.internet.reactor
Всеми моими клиентами имеют совершенно одинаковые среды, но только некоторый опыт этой проблемы:Twisted реактора не вызов функций из нити правильно
Они правильно connectTCP
к серверу через ws
и обмен первых несколькими сообщений. Приблизительно через одну минуту в, они должны послать сообщение на сервер с помощью
def execute(self, message, callback=None):
print(">>>", message, flush=True)
reactor.callFromThread(self._client_protocol_instance.send, message, callback)
self._client_protocol_instance.send
метода определяется следующим образом:
def send(self, command, callback):
print("send", command, callback, flush=True)
timestamp = int(time() * 1000000)
msg = (command.strip() + " --timestamp:" + str(timestamp))
if _self._debug:
_self._commands[str(timestamp)] = msg
if callback is not None:
_self._callbacks[str(timestamp)] = callback
payload = msg.encode()
_self._status_controller.set_state(payload)
self.sendMessage(payload)
Первый print
показывает в стандартный вывод, а второй один не делает. Я предполагаю, что send
не выполняется. После reactor.run()
, это единственная ссылка на reactor
во всей программе.
Процесс убийства клиента после этого немедленно обнаруживается сервером, поэтому в то время соединение было еще живым.
Что может быть причиной этого?