Как сервер проверяет, активен ли еще запрос от клиента к api фляги? - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть api фляги, которая выполняет какой-то функциональный процесс и возвращает несколько минут.Несколько раз запрос будет прерван клиентом.В этих ситуациях я хотел бы отменить обработку.Как я могу сделать это в колбе?

Я нашел временное решение.

@app.route('/stream')
    def stream():
       def gen():
           try:
               i = 0
               while True:
                   data = 'this is line {}'.format(i)
                   print(data)
                   yield data + '<br>'
                   i += 1
                   time.sleep(1)
           except GeneratorExit:
               print('closed')

return Response(stream_with_context(gen()))

Теперь это работает для браузера, когда мы запрашиваем через возвышенное и через некоторое время закрываем возвышенное, колба api не распознает завершение клиента

1 Ответ

0 голосов
/ 09 февраля 2019

Используйте пакет сельдерея и запустите эту функцию как задачу.Затем вы можете использовать любой другой маршрут для запуска функции revoke (), которая останавливает задачу сельдерея, например.your_worker.revoke (task_id, terminate = True).

...