Python线程多次调用该方法

时间:2018-06-02 23:00:58

标签: python python-3.x python-multithreading

如果标题状态不是200,我必须卷曲一个网站并显示一条消息。逻辑工作正常,但我在调用该方法时遇到了麻烦。

threading.Time应该每隔20秒调用 ONCE 方法,但很明显,它会多次调用它。有人可以告诉我如何让它每20秒调用一次方法

import requests
import threading
def check_status(url):
  while True:
    status = requests.get(url)
    if status.status_code != 200:
       print('faulty')

def main():
  threading.Timer(2.0, check_status, args=('https://www.google.com',)).start()

if __name__ == "__main__":
  main()

2 个答案:

答案 0 :(得分:1)

完成旧计时后,只需创建一个新计时器。

import requests
import threading

def check_status(url): 
    status = requests.get(url)
    if status.status_code != 200:
        print('faulty')
    threading.Timer(2.0, check_status, args=('https://www.google.com',)).start()


def main():
    threading.Timer(2.0, check_status, args=('https://www.google.com',)).start()

if __name__ == "__main__":
  main()

答案 1 :(得分:0)

每20秒,您创建一个进入无限循环的线程,该循环检查HTTP状态。即使你没有使用threading.Time,你仍然会得到多个打印件。删除while循环,它将按预期工作。

更新

我的错误,看文档:{​​{3}}

经过一段时间后,

Time将执行该功能。然后它会退出。你需要做的是,在while循环中有time.sleep,并在你的主要内部调用该函数。