【问题标题】:Change variable if request are not received within some time from each other如果在一段时间内未收到彼此的请求,则更改变量
【发布时间】:2022-01-17 18:07:50
【问题描述】:

我有一个 ajax 函数,它以 25 秒的间隔向您在下面看到的类发送数据

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

现在我想要实现的是在彼此 30 秒内没有发布请求时将标志变量设置为 0。我知道有 .elapsed 但它返回请求和响应之间的时间增量

【问题讨论】:

  • 您可能需要一个单独的 timer 函数,在 30 秒后更改标志,并通过成功的发布请求将其计数器重置为 0。
  • 我天真的方法是为最后一次发布请求添加时间戳。然后只需检查时间戳是否超过 30 秒。

标签: python flask


【解决方案1】:

正如我在 cmets 中已经说过的,我天真的方法是为最后一次发布请求添加时间戳。而不是简单地检查时间戳是否超过 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()

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

我希望这能给你一个好主意,你可以如何实现这一点。另请查看 cmets 中 @match 的建议。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 2022-07-05
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    相关资源
    最近更新 更多