Python Decorator – Как использовать возвращаемые значения функции в функции декоратораPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Python Decorator – Как использовать возвращаемые значения функции в функции декоратора

Сообщение Anonymous »

Я не знаю, как это решить. Я тестирую отправку запросов GET с помощью модуля запросов Python. Идея состоит в том, что если я получу ответный код ответа.status_code больше 500, мне следует повторить запрос.
До сих пор я реализовал решение, позволяющее повторить запрос независимо от статуса. код, и он работает отлично. Однако я изо всех сил пытаюсь передать «response.statuscode» основной функции в функцию декоратора. Я хочу передать «status_code» в декоратор, чтобы иметь возможность ссылаться на него в цикле while. Итак, это будет: `

Код: Выделить всё

while attempts < retries and status_code > 5:
У меня есть следующий рабочий код ниже. Технически, поскольку я не могу проверить 500 кодов ошибок, я хочу включить также 400 кодов, поскольку знаю, что они на моей стороне, поэтому проверяю их с помощью "response.status_code > 400"

Код: Выделить всё

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()

У меня есть обходной путь, с помощью которого я могу установить переменную ENV с кодом состояния и использовать ее в качестве аргумента в функции декоратора с модулем 'os'. Однако мне было интересно, возможно ли реализовать мою первоначальную идею.
Я попробовал передать status_code в качестве аргумента в функцию декоратора, но получил

Код: Выделить всё

TypeError: retry_requests() missing 1 required positional argument: 'status_code'


Подробнее здесь: https://stackoverflow.com/questions/793 ... tor-functi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Python Decorator – Как использовать возвращаемые значения функции в функции декоратора
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Python Decorator – Как использовать возвращаемые значения функции в функции декоратора
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Python Decorator – Как использовать возвращаемые значения функции в функции декоратора
    Anonymous » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Как использовать возвращаемые значения функции в функции декоратора
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Когда использовать фабрику декоратора и декоратора?
    Anonymous » » в форуме Python
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»