python threading.Timer:如何从回调函数中启动定时器

问题描述 投票:0回答:0

有没有办法在回调函数中启动定时器?我想做这样的事情:

senderSocket.sendall(message)
t = Timer(5, lambda senderSocket, message: senderSocket.sendall(message), (senderSocket, message))
t.start()
recv = senderSocket.recv(1024).decode("utf-8")

本质上,我在向接收者发送消息后启动一个计时器,我期待接收者的回复。如果我没有收到回复,那么我想重新发送消息给接收者并重新启动计时器。我想继续这样做,直到我得到答复。但是,我不知道如何重新启动计时器。

由于行:

recv = senderSocket.recv(1024).decode("utf-8")
阻塞了代码,我无法在该行之后添加启动计时器行,我能想到的重新启动计时器的唯一方法是在重新发送消息后从回调函数中重新启动它。我怎样才能做到这一点?或者有没有其他重启定时器的方法?

sockets python-multithreading data-transfer reliability
© www.soinside.com 2019 - 2024. All rights reserved.