python ratelimit模块

简介: python ratelimit模块

1.项目地址

https://github.com/tomasbasham/ratelimit

2.项目简介

这个项目的开发背景是考虑一些服务的API 对于开发人员的访问频率会做一些限制,如果不小心超出了这个限制,服务可能会禁止开发人员访问。


ratelimit 提供的装饰器,可以控制被装饰的函数在某个周期内被调用的次数不超过一个阈值,尽管作者本意是限制那些访问web API 的函数的调用次数,
但你可以推而广之,所有不能频繁调用的函数都可以用这个装饰器来修饰。

3.使用示例

# call_api这个函数在15分钟内最多只能调用15次,超出后就会报错
from ratelimit import limits, sleep_and_retry
import requests
FIFTEEN_MINUTES = 900
@sleep_and_retry #如果不加该装饰器,则如果超过调用阈值直接报错,加上后会等待
@limits(calls=15, period=FIFTEEN_MINUTES)
def call_api(url):
    response = requests.get(url)
    if response.status_code != 200:
        raise Exception('API response: {}'.format(response.status_code))
    return response
先使用limits 对call_api 进行装饰,再用sleep_and_retry 进行二次装饰,一旦超出访问限制,程序不会结束,sleep_and_retry会根据当前访问周期剩余时间进行sleep ,然后再次调用。

 

相关文章
|
17天前
|
XML Shell API
python ConfigParser、shutil、subprocess、ElementTree模块简解
python ConfigParser、shutil、subprocess、ElementTree模块简解
|
16天前
|
存储 算法 数据库
使用python hashlib模块给明文字符串加密,以及如何撞库破解密码
`hashlib` 是 Python 中用于实现哈希功能的模块,它可以将任意长度的输入通过哈希算法转换为固定长度的输出,即散列值。该模块主要用于字符串加密,例如将用户名和密码转换为不可逆的散列值存储,从而提高安全性。`hashlib` 提供了多种哈希算法,如 `md5`、`sha1`、`sha256` 等。
32 1
|
4天前
|
Java Serverless Python
探索Python中的并发编程与`concurrent.futures`模块
探索Python中的并发编程与`concurrent.futures`模块
11 4
|
16天前
|
Python
像导入Python模块一样导入ipynb文件
像导入Python模块一样导入ipynb文件
|
17天前
|
Python
如何最简单、通俗地理解Python模块?
如何最简单、通俗地理解Python模块?
|
16天前
|
算法 Python
python tarfile模块
python tarfile模块
|
17天前
|
SQL 关系型数据库 MySQL
Python之MySQL操作及Paramiko模块操作
Python之MySQL操作及Paramiko模块操作
|
17天前
|
存储 JSON JavaScript
python序列化: json & pickle & shelve 模块
python序列化: json & pickle & shelve 模块
|
16天前
|
Python
如何在 Python 中导入模块
【8月更文挑战第29天】
19 1
|
16天前
|
Python