【发布时间】:2018-10-15 00:37:43
【问题描述】:
- 我目前使用的 REST API 每小时只允许 1000 次查询
- 一旦 1000 个查询用完,您就必须等到下一小时的开始才能重置计数器
- 我的目标是确定在下一小时开始之前我必须等待的秒数
- 我目前正在使用
time.sleep方法使脚本进入休眠状态,直到下一小时开始
我使用datetime 库整理了一个相当粗略的解决方案,如下所示(为安全起见,增加了两分钟)
import datetime
# Determine the seconds until the next hour (add 2 minutes to be safe)
now = datetime.datetime.now()
next_hour = datetime.datetime(now.year, now.month, now.day, now.hour + 1, 2)
sleep_seconds = (next_hour - now).seconds
# Put the execution to sleep for a while
print("Sleeping for {0} minutes...".format(sleep_seconds // 60))
time.sleep(sleep_seconds)
此脚本确实有效,但在下一个小时是第二天的开始时不可靠。
-
datetime预计小时值介于0..23之间 - 如果
datetime.datetime.now()方法返回23方法将失败 如果你将24传递给datetime对象 - 如果第二天也穿越到下个月或下一年,那也是不可靠的。
有人可以提出一个更好的解决方案来解决这些问题吗?
【问题讨论】:
-
你应该可以使用
datetime.datetime.now() + timedelta(hours=1)。 -
你为什么想让你的 Api 表现得那样?
-
@erip 该解决方案将简单地将
datetime对象添加 1 小时到now()返回的对象,而不是在下一小时开始时生成datetime对象 -
@OlivierMelançon 这不是我创建的 API,这是我需要查询的 API
-
是的,还有更多工作要做……但要处理翻转。