Django - Python: порождай процесс и возвращайся - PullRequest
0 голосов
/ 18 декабря 2010

Я некоторое время искал ответ на этот вопрос, но, возможно, я не искал нужную информацию.

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

Я не уверен, что это было четкое объяснение, но я буду болеечем рад уточнить, если какая-то часть сбивает с толку.

Ответы [ 3 ]

3 голосов
/ 18 декабря 2010

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

http://celeryproject.org/

1 голос
/ 18 декабря 2010
  1. Используйте систему очереди сообщений, например, сельдерей ( django-celery может помочь вам.)

  2. Используйте СУБД и фоновый процесс (ы), который периодически вызывается cron или всегда запущен. Сначала веб-сервер вставляет данные, необходимые для фонового задания, в таблицу базы данных. И затем, фоновый процесс (всегда запущенный или периодически запускаемый cron) получает последние вставленные строки и обрабатывает их.

  3. Создать поток.

worker_thread = threading.Thread (target = do_background_job, args = args)
worker_thread.setDaemon (False)
worker_thread.start ()
return HttpResponse ()

Даже после отправки HttpResponse обрабатывается do_background_job. Однако, поскольку веб-сервер (apache) может уничтожать любые потоки, выполнение background_job не гарантируется.

1 голос
/ 18 декабря 2010

Проще всего, вы можете сделать это с помощью подпроцесса. Открыть. Смотрите здесь некоторую информацию о модуле подпроцесса:

http://docs.python.org/library/subprocess.html

Существуют другие (возможно, лучшие) методы для этого, но этот, кажется, соответствует вашим требованиям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...