Django: запустить процесс в фоновом потоке?

Я пытаюсь разработать, как выполнить процесс в фоновом потоке в Django. Я плохо знаком с Django и для потоками, поэтому терпите меня, если я использую терминологию неправильно.

Вот код, который я имею. В основном я хотел бы start_processing начаться как только success функция инициирована. Однако start_processing вид функции, которая могла легко занять несколько минут или сбоя (это зависит от внешнего сервиса, над которым я не имею никакого контроля), и я не хочу, чтобы пользователь должен был ожидать его для завершения успешно, прежде чем представление будет представлено. ('Успех', что касается их, не зависит от результата start_processing; Я - единственный человек, который должен волноваться, перестало ли это работать.)

def success(request, filepath):
    start_processing(filepath)
    return render_to_response('success.html', context_instance = RequestContext(request))

От Гугления я сделал, большинство людей предполагает, что фоновые потоки не используются в Django, и вместо этого задание крона более подходит. Но я вполне хотел бы start_processing начаться, как только пользователь добирается до функции успеха, вместо того, чтобы ожидать до прогонов задания крона. Существует ли способ сделать это?

19
задан AP257 4 March 2010 в 17:04
поделиться

2 ответа

Я не уверен, что вам нужна ветка для этого. Похоже, вы просто хотите запустить процесс, поэтому загляните в модуль подпроцесса .

6
ответ дан 30 November 2019 в 03:29
поделиться

IIUC, проблема в том, что процессу веб-сервера могут не нравиться дополнительные длительные потоки, он может убивать / порождать серверные процессы по мере увеличения или уменьшения спроса и т. д. и т. д.

Для этого типа обработки вам, вероятно, лучше будет взаимодействовать с процессом внешней службы, чем встраивать его в процесс wsgi / fastcgi веб-сервера.

Если единственное, что вы отправляете, - это путь к файлу, написать это сервисное приложение должно быть довольно легко.

3
ответ дан 30 November 2019 в 03:29
поделиться
Другие вопросы по тегам:

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