Там какой-либо путь состоит в том, чтобы сделать асинхронный вызов функции из Python [Django]?

LINQ К SQL легок, и он встроен в.NET 3,5 SP1.

6
задан mshell_lauren 18 November 2011 в 21:08
поделиться

3 ответа

Вместо того, чтобы пытаться управлять этим через подпроцессы или потоки, я рекомендую вам полностью разделить это. Есть два подхода: первый - установить флаг где-нибудь в таблице базы данных и регулярно запускать задание cron, которое проверяет флаг и выполняет требуемую операцию.

Второй вариант - использовать очередь сообщений. Ваш процесс загрузки файла отправляет сообщение в очередь, а отдельный слушатель получает сообщение и делает то, что необходимо. Я использовал RabbitMQ для такого рода вещей, но доступны и другие.

В любом случае вашему пользователю не нужно ждать завершения процесса, и вам не нужно беспокоиться об управлении подпроцессами.

7
ответ дан 10 December 2019 в 02:51
поделиться

Если вам специально не нужно использовать отдельный процесс, который, кажется, является сутью других вопросов, которые С.Лотт указывает как дубликат вашего, модуль threading из стандартной библиотеки Python (задокументировано здесь ) может предложить простейшее решение. Просто убедитесь, что handle_file не обращается ни к каким глобальным объектам, которые могут быть изменены, и тем более не изменяет сами глобальные объекты; в идеале он должен взаимодействовать с остальной частью вашего процесса только через экземпляры Queue ; и т. д. и т. д., все обычные рекомендации по многопоточности; -).

0
ответ дан 10 December 2019 в 02:51
поделиться

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

Решение, которое я придумал, могло быть немного чрезмерным для вас должен иметь другой асинхронный сервер в очереди сообщений фоновой обработки из веб-запроса и бросать некоторый фрагментированный javascript, который анализируется непосредственно из браузера асинхронным способом (то есть: ajax).

Все делается прозрачным для конца пользователь через настройку mod_proxy.

2
ответ дан 10 December 2019 в 02:51
поделиться
Другие вопросы по тегам:

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