首页 > 解决方案 > 更改调度时间 - Python

问题描述

我正在使用计划模块来自动运行一个功能......

我正在考虑动态更改调度时间,但解决方案不成功

代码 -

import schedule
import pandas
from time import gmtime, strftime, sleep
import time
import random

time = 0.1
def a():
    global time
    print(strftime("%Y-%m-%d %H:%M:%S", gmtime()))
    index = random.randint(1, 9)
    print(index, time)
    if(index==2):
        time = 1

print(strftime("%Y-%m-%d %H:%M:%S", gmtime()))
schedule.every(time).minutes.do(a) #specify the minutes to automatically run the api

while True:
    schedule.run_pending()

在这个程序中,我安排程序每 6 秒运行一次。如果随机整数 -index值变为 2,则time变量分配为1(1 分钟)。我检查了,time随机整数index变为 2 后,变量变为 1。问题 - 将变量更改为 1 后time,调度仍然a()每 6 秒而不是 1 分钟运行一次函数。

如何动态改变调度时间?

谢谢

标签: pythonpython-3.xscheduled-tasksscheduler

解决方案


将时间变量更改为 1 后,调度仍然每 6 秒而不是 1 分钟运行一次函数 a()。

这是因为在开始时schedule.every(time).minutes.do(a) # specify the minutes to automatically run the api设置time6 秒,即使您更改该变量的值也不会改变,因为该行仅执行一次,而该执行时的时间值为6 秒

如何动态改变调度时间?

在阅读DOCUMENTATION之后,我没有发现任何(我认为)关于手动更改时间(当满足某些条件时)但它内置了Random Interval函数,该函数本身指定了随机时间within the range

在你的情况下,你可以这样做:

schedule.every(5).to(10).seconds.do(a)

问题是当某些条件满足时您无法更改时间。

也许可能有一些方法可以解决这个问题,但无法弄清楚。这些信息可能有助于进一步调查以解决您的问题。


推荐阅读