До сих пор я реализовал решение, позволяющее повторить запрос независимо от статуса. код, и он работает отлично. Однако я изо всех сил пытаюсь передать «response.statuscode» основной функции в функцию декоратора. Я хочу передать «status_code» в декоратор, чтобы иметь возможность ссылаться на него в цикле while. Итак, это будет: `
Код: Выделить всё
while attempts < retries and status_code > 5:
Код: Выделить всё
import requests, time
def retry_requests(func, retries=3):
def retry_wrapper(*args, **kwargs):
attempts = 0
while attempts < retries:
try:
return func(*args, **kwargs)
except requests.exceptions.RequestException as e:
print(f"Error as {e}.")
attempts +=1
time.sleep(3)
return retry_wrapper
@retry_requests
def get_request():
response = requests.get("https://this-url-does-not-exist-sorry-jwsgudkaad")
resp = response.json()
status_code = response.status_code
return resp, status_code
def main():
resp, status_code = get_request()
if __name__ == '__main__':
main()
Я попробовал передать status_code в качестве аргумента в функцию декоратора, но получил
Код: Выделить всё
TypeError: retry_requests() missing 1 required positional argument: 'status_code'
Подробнее здесь: https://stackoverflow.com/questions/793 ... tor-functi