Серверная часть WSGIServer с React - обработка долго выполняющегося скрипта - PullRequest
0 голосов
/ 02 мая 2020

Мой Python Сервер WSGI вызывает отдельный сценарий python, обработка которого может занять ~ 5 минут. Какой лучший способ для меня справиться с этим? В данный момент веб-браузер ждет и возвращается после успешного выполнения скрипта.

У меня проблемы с поиском примеров того, как принять запрос, запустить длинный скрипт, а затем через 5 минут сказать React: «Эй, все готово!» - вместо того, чтобы chrome завис в состоянии загрузки.

Спасибо за ваш совет

1 Ответ

0 голосов
/ 02 мая 2020

Вы можете использовать rq или celery в качестве рабочего экземпляра. rq довольно простой и минимальный, где celery полнофункциональный, но немного подавляющий. Вот как это будет работать.

def execute_background_task(param):
          your task...
def request(param):
        execute(param)
        return "Your Request is getting processed"

Так что execute_background_task будет выполняться rq или сельдереем в фоновом режиме , И с внешнего интерфейса вы отправляете запрос sever чем «Эй, rq / celery, вы закончили задачу sh?». Итак, как вы узнали, закончили ли они sh это или нет?

Решение: Вы получите идентификатор задания для каждой задачи, которая выполняется в фоновом режиме. Вы можете запросить это, если оно закончилось или нет.

Я думаю, вам следует проверить какую-нибудь замечательную документацию, чтобы поиграть с ней. Вот несколько интересных ссылок, по которым я следовал:

https://realpython.com/flask-by-example-implementing-a-redis-task-queue/

https://flask-rq2.readthedocs.io/en/latest/

...