Как остановить тему Django - PullRequest
1 голос
/ 23 ноября 2011

У меня есть веб-сайт, который использует Jquery и Python.

У меня есть Ajax Request, который выполняет функцию python.Внутри функции Python есть интерфейс с Linux, который выполняет библиотеку C ++.

Проблема, с которой я сталкиваюсь, заключается в том, что я создаю два запроса на выполнение этой библиотеки C ++ из AJAX через Python.Задача C ++ может занять до 2 минут для загрузки.Это нормально, однако, когда я ухожу с текущей страницы, поскольку предыдущее задание технически не выполнено, Django не загрузит мне новую страницу.

Можно ли как-то определить, удаляются ли страницы и еслитак что затем вызовите python, чтобы остановить его функцию, чтобы я мог иметь некоторую отзывчивость.

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

Так же у кого-нибудь есть идеи, как заставить Python убить все потоки при переходе с его текущей страницы.

Приветствия

1 Ответ

0 голосов
/ 23 ноября 2011

Похоже, вам нужно асинхронное выполнение для вашей "блокирующей" C ++ Lib.Существует несколько подходов к решению подобных проблем, но многопоточность IMO по своей сути неверна ...

Один из подходов заключается в использовании асинхронного веб-сервера, такого как Tornado , для обработки асинхронных запросов.Другой (и тот, который мне нравится больше) должен использовать Сельдерей .

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