2013-03-10 3 views
0

Я хочу выполнить некоторый код python после запуска сервера Django. Этот код имеет бесконечный цикл и будет работать в фоновом режиме до завершения работы сервера. Он обращается к базе данных и различным интернет-услугам. В то же время пользователи должны иметь возможность использовать веб-страницы с интерфейсом и иметь доступ к базе данных.Как выполнить фоновый поток после запуска сервера?

+1

@ Алмазный сельдерей - сложная асинхронная система управления очередью. Все, что мне нужно, это запустить один фоновый поток при запуске. – siamii

+0

Сельдерей - не единственный ответ, указанный в этом вопросе. – Amber

+0

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

ответ

0

Если вам нужно начать подпроцесс при запуске, есть несколько битов для очистки:

  1. Под «запуска», вы имеют в виду, когда запускается отдельный поток Джанго.
  2. Если у вас есть Django в настройках с несколькими потоками, а вы просто хотите иметь один подпроцесс, независимо от того, сколько потоков Django работает на вашем поле, вам нужно будет каким-то образом разобраться из , либо проверяя, был ли ваш подпроцесс уже запущен, либо превратить ваш «подпроцесс» в полностью сформированный процесс/службу его , а использовать некоторый тип диспетчера демона, чтобы запустить ваш подпроцесс как Django, так и .

Тем не менее, самым легким местом для исправления, вероятно, будет settings.py. Этот файл/модуль импортируется один раз, когда поток Django запускается.

Вы также можете сделать это в пределах wsgi.py, если вы используете настройку прокси WSGI.

Для ответа «как начать нить», please see this one.

Смежные вопросы