Джанго взгляд и отдельные процессы - PullRequest
1 голос
/ 02 июня 2011

Я хотел бы сделать что-то подобное:

f (n) вычисляет n! это, очевидно, занимает много времени, поэтому вычисления должны выполняться отдельно от представления django. Кроме того, я хотел бы, чтобы представление немедленно возвращало ответ (например, прогресс 0%), и последующий опрос должен обновлять прогресс, поэтому представление должно взаимодействовать с вышеуказанным процессом.

Каков наилучший способ добиться этого?

Ответы [ 3 ]

6 голосов
/ 02 июня 2011
0 голосов
/ 03 июня 2011

Я использовал стратегию, содержащуюся в этой ссылке, чтобы сильно повлиять: Сигналы в Django . Я использовал раздел «Асинхронная обработка сигналов», в котором используется модуль потоков Python.

Код сигналов довольно устарел (хотя он находится в верхней части поиска Google). Тем не менее, многопоточность кода, вероятно, может вам помочь больше всего.

0 голосов
/ 02 июня 2011

Андрей Федосеев дал отличное предложение, но позвольте мне предложить более общее решение. Вы можете создать модель WaitingTasks, в которую ваше представление ставит новые задачи. Затем для обработки этих ожидающих задач можно использовать любой метод - cronjob, upstart daemon и т. Д. - запись хода выполнения и результата.

(На самом деле celery использует аналогичный подход, только с RabbitMQ)

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