Одновременное выполнение нескольких сценариев в фоновом режиме

У меня есть страница, на которой пользователь выбирает скрипт Python, а затем этот скрипт выполняется. Моя проблема в том, что некоторые скрипты выполняются долго (до 30 м), поэтому я хотел бы запускать их в фоновом режиме, пока пользователь может перемещаться по сайту.

Я пытался использовать Celery, но поскольку я на Windows, я не смог сделать ничего лучше, чем использовать --pool=solo, который, хотя и позволяет пользователю делать что-то еще, может делать это только для одного пользователя одновременно.

Я также видел эту тему во время поиска решения, но не смог понять, как она работает и как ее реализовать, а также определить, действительно ли она отвечает моей проблеме...

Вот мой вопрос: как я могу иметь несколько потоков/много процессов на Celery в то время как на Windows? Или, если есть другой способ, как я могу выполнять несколько задач одновременно в фоновом режиме?

Определили ли вы, относятся ли ваши медленные скрипты к задачам, привязанным к процессору, или к задачам ввода-вывода?

если они связаны с вводом/выводом, вы можете использовать eventlet и gevent, основываясь на стратегии 1 в блоге с distributedpython.com

но если они привязаны к процессору, то вам, возможно, придется подумать об использовании таких способов, как специальный Celery windows box (или windows Docker container) для обхода проблемы Celery billiard на Windows путем установки переменной окружения (FORKED_BY_MULTIPROCESSING=1) на основе стратегии 2 в блоге с distributedpython.com

Вернуться на верх