@hkkf0

Python requests делает много post запросов, что делать?

Есть функция, в views.py которая должна делать POST запрос по API одного сайта. Но скрипт почему-то работает некорректно, обновление происходит очень медленно, и выдается ошибка ConnectionError. Но POST запрос отправляется несколько раз, и в итоге создает несколько записей в БД на сайте. Циклов вроде никаких нет. Что не так?

views.py
@login_required(login_url='login-main')
def send_program_to_orchard(request, orchard_pk, pk, user_pk):
    services.send_program_to_orchard(orchard_pk, pk)
    return redirect(request.path)


services.py
def make_json(program_id):
    program = Program.objects.get(id=program_id)
    program_substances = ProgramSubstance.objects.filter(program=program)
    response = {
        'program_number': program.number,
        'program_substances': []
    }
    for each in program_substances:
        response['program_substances'].append({'date': each.date.isoformat(), 'substance': each.substance, 'dose': float(each.dose),
                                               'measurement': each.measurement, 'comment': each.comment})
    return json.dumps(response)


def send_program_to_orchard(orchard_pk, program_pk):
    orchard = Orchard.objects.get(id=orchard_pk)
    headers = {'Authorization': f'Token {orchard.API_token}'}
    data = {'data': make_json(program_pk)}
    requests.post(orchard.program_API, headers=headers, data=data)
  • Вопрос задан
  • 103 просмотра
Пригласить эксперта
Ответы на вопрос 1
@bacon
Что не так?

1. делать http запросы из views на django, django - синхронный, requests будет блокировать остальные запросы, правильно или async фреймворк использовать, или выносить это в фоновые задачи.
2. никак не обрабатывать exception которые генерирует requests

Но POST запрос отправляется несколько раз
смотри логи
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы