Запущение скрипта Python от представлений django

Хочу запустить скрипт Python от представлений django. И я не хочу ожидать до выполнения сценария. Сценарий Python должен сделать свою работу в фоновом режиме и в это время, я отправлю ответ клиенту, который "сценарий выполняет в фоновом режиме". Какая-либо Идея?

1
задан 28 August 2015 в 09:47

2 ответа

subprocess.Popen является лучшим, если Вы хотите отправить непосредственный ответ. Но удостоверьтесь, что subprocess.Popen не возвращает значения назад. т.е. необходимо использовать как ниже:

subprocess.Popen(["python","test.py"], close_fds=True)

И использование close_fds=True, наряду с которым, также помогает лучше.

0
ответ дан 7 December 2019 в 16:10

Как только Вы говорите, "делают это в фоновом режиме", я собираюсь предложить Сельдерей . Это вовлекает рабочий RabbitMQ как локального демона, которого Сельдерей использует в качестве промежуточного хранилища данных и , Django может попросить, чтобы Сельдерей выполнил задачи .

, Если необходимо отследить состояние, после того как Вы добавляете задачу, можно получить UUID для него и затем запросить Сельдерей для состояния и/или просто иметь палку Сельдерея результат в стандартном Django ORM для Вас, что Вы опрашиваете (или используете webhooks, или независимо от того, что это - хипстеры, используют эти дни).

<час>

таким образом, конечно, большое изучение и изрядное количество продолжающейся нагрузки для того, чтобы просто выполнить что-то в фоновом режиме. Вы можете всего делать это грязное subprocess.Popen путь . Вы не получите вывода или получите любое состояние... Но это должно примерно работать.

1
ответ дан 7 December 2019 в 16:10

Другие вопросы по тегам:

Похожие вопросы: