Задать вопрос

Flask, как вызвать метод и не дожидаясь его ответа вернуть ответ в jsonify?

Есть роут, при запросе которого должен вызваться метод draw() который в свою очередь рисует картинку с помощью библиотеки Pillow.
Проблема в том, что вся эта отрисовка занимает порядка 10 секунд (особенности драйвера e-ink дисплея)

from draw import Drawing

@app.route(api_url('/<string:route>'), methods=['POST'])
def router(route):
    try:
        req_data = request.json
        if route == 'weather':
            Drawing().draw()
            return jsonify(status='Draw'), 200
        else:
            return abort(404)
    except Exception as e:
        logError(e)
        return abort(400)

Вопрос в том как вызвать метод, чтобы началась отрисовка и при этом не дожидаясь ответа данного метода вернуть ответ запроса в json?
  • Вопрос задан
  • 293 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
GavriKos
@GavriKos
Надо отделять мух от котлет.
В роуте возводите флаг "нужна перерисовка". Отдельным потоком (а еще лучше - отдельным сервисом) мониторите этот флаг и соответствующе реагируете. В противном случае вы огребете проблем как только к роуту обратится больше 1 клиента.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Zanak
Асинхрон на базе очередей редиски не вариант? Я про что - то подобное этому.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
03 февр. 2025, в 22:54
20000 руб./за проект
03 февр. 2025, в 21:56
2000 руб./за проект