ApiRetrys
Are you annoyed because your request has an error due to internet problems? I think this library could be the answer
Feature ✨
- automatically repeats if the request times out
- now the runtime logs are more colorful
- The number of repetitions and waiting time can be adjusted and default values are provided
- maintain flexibility by returning all responses received
- provides logs to make monitoring easier, which can be turned on or not
- provides all the methods in the request
- can handle to may requests
- You can handle forbidden (403) by refreshing the session with a request to the main URL
Tech 💻
- requests is an easy-to-use Python library for interacting with APIs and making HTTP requests
Requirement ⚙️
Installation 🛠️
pip install ApiRetrys
How To Usage 🤔
Basic use
from ApiRetrys import ApiRetry
api = ApiRetry(show_logs=True)
response = api.get(url='https://github.com/')
# or you can define data types
from ApiRetrys import ApiRetry
from requests import Response
api = ApiRetry(show_logs=True)
response: Response = api.get(url='https://github.com/',)
# or you want to manually set the max_retries
# by defaulth (max_retries) is 5
response: Response = api.get(url='https://github.com/', max_retries=10)
if you set param (show_logs=True) then a log will come out like this
If the error exceeds max_retries then it will return last response
With other parameters
from ApiRetrys import ApiRetry
from requests import Response
headers = {
"PUBLIC-CSRF-TOKEN": '7giS6UPv3Rf2l9fclp2wFzCEI',
"User-Agent": user_agent.random
}
payload = {
"query":"anime",
"page":1,
"per_page":50,
"sorting":"likes",
"pro_first":"1",
"filters":[],
"additional_fields":[]
}
cookies = {
'PRIVATE-CSRF-TOKEN': '8Mc45%2BAa3Vd',
'cf_clearance': 'rpQn91kojLw_ZCzrgjP',
'__stripe_mid': '0adecf01-7471-434e-aa12-6c2d33cbb216fd19aa',
'g_state': '{"i_p":1702902016560,"i_l":1}',
'visitor-uuid': 'fbf18513-e803-',
'__cf_bm': '_ukyfnf1.He..wDhIxF',
'__stripe_sid': 'c7956d65-b70f-4e',
'referrer-host': 'www.google.com'
}
api = ApiRetry(show_logs=False)
response: Response = api.post(url='https://github.com/', data=payload, cookies=cookies)
examples of more complex usage as well as the use of handlers for many requests and forbidden
from ApiRetrys import ApiRetry
from requests import Response
class Main:
def __init__(self) -> None:
self.api = ApiRetry(
# parameters to display logs or not
show_logs=True,
# parameter whether you want to use the default header,
# but only contain the user agent
defaulth_headers=True,
# param to handle responses 403 and 429,
# if false it will be returned even though the responses are 403 and 429
handle_forbidden=True,
# whatever response you want to handle
# This is the default value, if it is not entered there is no problem
codes_handler=[403, 429],
# URL to refresh the session if you get a 403 response
# (it is recommended to use the main URL of the destination website)
redirect_url='https://github.com/')
...
def execute(self, url: str):
response: Response = self.api.get(url)
print(response)
...
if __name__ == '__main__':
main = Main()
main.execute('https://github.com/ryyos/ApiRetrys')
explanation
when you try to make a request to the url https://github.com/ryyos/ApiRetrys but you get a 403 response because your session does not have CSRF-TOKEN, or because there are too many requests, then the code will handle it by trying to refresh the session by making requests to the main URL in the redirect_url parameter
🚀Structure
│ LICENSE
│ README.md
│ setup.py
│
└───ApiRetrys
ApiRetrys.py
Logs.py
__init__.py
Author
👤 Rio Dwi Saputra
- Twitter: @ryyo_cs
- Github: @ryyos
- Instagram: @ryyo.cs
- LinkedIn: @rio-dwi-saputra-23560b287
Metadata
Release files for ApiRetrys 0.0.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| ApiRetrys-0.0.5.tar.gz | 6.4 kB | Without provenance | Details for ApiRetrys-0.0.5.tar.gz |
Release files / ApiRetrys-0.0.5.tar.gz
| Download URL | ApiRetrys-0.0.5.tar.gz |
|---|---|
| Size | 6.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
365c0d2c735f2a96f6b37b9c6d7c39fc580acbbfc003c312f0941fbd31e09f44
|
|
BLAKE2b-256 checksum How to use checksums |
f2b05c2b3910539aea2c0e2b98d7f54aa141a356573a704a90836360ea393dfb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.11.2
|
Security for ApiRetrys 0.0.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.