python - 更改调度时间 - 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 分钟运行一次函数。
如何动态改变调度时间?
谢谢
解决方案
将时间变量更改为 1 后,调度仍然每 6 秒而不是 1 分钟运行一次函数 a()。
这是因为在开始时schedule.every(time).minutes.do(a) # specify the minutes to automatically run the api
设置time
为6 秒,即使您更改该变量的值也不会改变,因为该行仅执行一次,而该执行时的时间值为6 秒。
如何动态改变调度时间?
在阅读DOCUMENTATION之后,我没有发现任何(我认为)关于手动更改时间(当满足某些条件时)但它内置了Random Interval函数,该函数本身指定了随机时间within the range
。
在你的情况下,你可以这样做:
schedule.every(5).to(10).seconds.do(a)
问题是当某些条件满足时您无法更改时间。
也许可能有一些方法可以解决这个问题,但无法弄清楚。这些信息可能有助于进一步调查以解决您的问题。
推荐阅读
- windows - 编译时如何自动包含依赖的dll?
- swift - 如何使用异步等待 Swift 5.5 等待 x 秒
- reactjs - 如何修复“NativeFirebaseError: [storage/object-not-found] No object exists at the desired reference.”?
- javascript - 2021 年在 Web 应用程序中嵌入 HTML 页面最安全的方法是什么:iframe、对象、嵌入或其他方式?
- python - (XML) 如果节点具有给定值,则获取元素
- java - 如何优化将一种对象类型的列表转换为另一种?
- python - 删除带有熊猫的行,字段中的字符串长度过长
- javascript - 相当于 Python 列表 (l) 的 Chrome Javascript 调试器
- javascript - 如何使用 javascript 选择“srcset”属性的值?
- python - 如何使 Google Colab 代码适应 AWS lambda 函数?