0

我正在编写一个脚本,它通过 websocket 向设备发送串行消息。当我想启动我写的设备时:

def start(ws):
    """
    Function to send the start command
    """
    print("start")
    command = dict()
    command["commandId"] = 601
    command["id"] = 54321
    command["params"] = {}
    send_command(ws, command)

设备每 5 小时左右重新启动一次,在重新启动期间,我的功能启动请求没有运行,我的代码完全停止。

我的问题是,有没有办法告诉 python:“如果 1 分钟没有发生任何事情,请再试一次”

4

2 回答 2

0

目前尚不清楚究竟是什么ws或如何设置它;但是您想为套接字添加超时。

https://websockets.readthedocs.io/en/stable/api.html#websockets.client.connect有一个timeout关键字;有关其作用的详细信息,请参阅文档。

如果这不是您使用的 websocket 库,请使用详细信息更新您的问题。

于 2020-12-17T08:23:51.613 回答
0

您可以sleeptime模块中使用

import time
time.sleep(60) # waits for 1 minute

另外,请Multithreading考虑sleep

import threading 
import time
  
def print_hello():
  for i in range(4):
    time.sleep(0.5)
    print("Hello")
  
def print_hi(): 
    for i in range(4): 
      time.sleep(0.7)
      print("Hi") 

t1 = threading.Thread(target=print_hello)  
t2 = threading.Thread(target=print_hi)  
t1.start()
t2.start()

上面的程序有两个线程。已使用 time.sleep(0.5) 和 time.sleep(0.75) 分别暂停这两个线程的执行 0.5 秒和 0.7 秒。

更多在这里

于 2020-12-17T07:57:00.757 回答