У меня проблемы с twisted.internet.reactor
Все мои клиенты имеют полностью идентичные среды, но только у некоторых возникает эта проблема:
Они корректно 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
во всей программе.
Уничтожение клиентского процесса после этого немедленно обнаруживается сервером, поэтому соединение в то время еще было активным.
Что может быть причиной этого?