如果在一段时间内没有收到彼此的请求,则更改变量

Change variable if request are not received within some time from each other

我有一个 ajax 函数,它以 25 秒的间隔向 class 发送数据,如下所示

class StateInfo:
    flag = None 
    def post(self):
        data = request.get_data()
        info = json.loads(data)

现在我想要实现的是在 30 秒内没有 post 请求时将标志变量设置为 0。我知道有 .elapsed 但它 returns 请求和响应之间的时间差

正如我在评论中所说,我天真的做法是为最后一个 post 请求添加时间戳。而不是简单地检查时间戳是否早于 30 秒。

from multiprocessing import Process
from datetime import timedelta, datetime

class StateInfo:
    flag = None 
    ts = None
    def post(self):
        ts = datetime.now()
        data = request.get_data()
        info = json.loads(data)
    
    def check_state(self):
        if ts < datetime.now() + timedelta(seconds = -30):
            flag = 0

if __name__ == "__main__":
    state_info = StateInfo()
    proc = Process(target=state_info.check_state())
    proc.start()

请注意,我添加了多处理,因为您可能有第二个进程,它需要同时 运行。虽然,您可能需要重复该过程。

我希望这能给你一个好主意,你如何才能做到这一点。另请查看评论中@match 的建议。