运行create_and_update_worksheets()函数之前的条件

时间:2017-10-23 01:50:23

标签: python if-statement

import socket, schedule, time

from create_and_update_xlsx_sheets import create_and_update_worksheets

REMOTE_SERVER = "www.google.com"
def is_connected():
  try:
    host = socket.gethostbyname(REMOTE_SERVER)
    s = socket.create_connection((host, 80), 2)
    return True
  except:
     pass
  return False

schedule.every().minute.do(create_and_update_worksheets())

我有函数create_and_update_worksheets()函数。我想在运行它之后测试一下互联网连接。我想对schedule.every().minute.do(create_and_update_worksheets())说,好吧,最多用is_connected()测试连接5次。如果在该时间内连接为True,则运行计划任务或以其他方式通过。任何聪明的想法如何做到这一点?

请注意,我希望每次尝试之间等待5分钟。如果尝试为True,则它将运行create_and_update_worksheets()并且不完成剩余的尝试。很明显,在第三次尝试成功,然后schedule.every().minute.do(create_and_update_worksheets()),第四次和第五次尝试将不会被尝试。

1 个答案:

答案 0 :(得分:0)

这应该适合你:

import socket, schedule, time

from create_and_update_xlsx_sheets import create_and_update_worksheets

REMOTE_SERVER = "www.google.com"
def is_connected():
  try:
    host = socket.gethostbyname(REMOTE_SERVER)
    s = socket.create_connection((host, 80), 2)
    return True
  except:
     pass
  time.sleep(300)
  return False

for i in range(5):
    if is_connected():
        create_and_update_worksheets()
        schedule.every().minute.do(create_and_update_worksheets())
        break

它每秒检查连接5秒钟,如果连接,它会安排任务。