我对 python 及其概念有点陌生。对于我当前的项目,我需要以 x 速率/y 分钟进行某些 api 调用。关于这一点,我遇到了装饰器的概念和一个相同的python库。它称为ratelimit并单击此处转到其 github 链接
这个 api 最简单的例子是:
from ratelimit import rate_limited
import requests
MESSAGES=100
SECONDS= 3600
@rate_limited(MESSAGES, SECONDS)
def call_api(url):
response = requests.get(url)
if response.status_code != 200:
raise ApiError('Cannot call API: {}'.format(response.status_code))
return response
但我需要从另一个函数调用这个函数 call_api
def send_message():
global MESSAGES
global SECONDS
MESSAGES=10
SECONDS=5
end_time=time.time()+60 #the end time is 60 seconds from the start time
while(time.time()<end_time):
call_api(url)
我希望调用发生并希望装饰器的参数在运行时更新,因为实际值将是用户输入。但根据我的理解,装饰器在运行时之前取值。那么我如何将动态值传递给装饰器。
提前感谢您的帮助