을 함수를 호출 있지만이 문제 만 경험 : ws
교환 처음 몇 메시지를 통해 서버에트위스트 반응기 내 모든 클라이언트가 완전히 동일한 환경을 가지고 내가 <code>twisted.internet.reactor</code>와 함께하는 데 문제가 스레드에서 제대로
그들은 제대로 connectTCP
. 다음과 같이 약 1 분, 그들은 정의
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
에 대한 유일한 참조입니다.
이런 일이 발생하면 클라이언트의 프로세스를 강제 종료하면 서버에서 즉시 감지하므로 해당 시점에 연결이 아직 남아 있습니다.
이 문제의 원인은 무엇일까요?