Python, используя os.system – Есть ли способ, чтобы скрипт Python прошел мимо этого, не дожидаясь завершения вызова?

Я пытаюсь использовать Python (через Django framework), чтобы сделать вызов командной строки Linux, и попробовал как os.system, так и os.open, но для обоих из них кажется, что скрипт Python зависает после вызова командной строки в качестве вызова предназначен для создания экземпляра сервера (поэтому он никогда не «заканчивается», поскольку он должен быть длительным). Я знаю, что для того, чтобы сделать что-то подобное с другим кодом Python, вы можете использовать что-то вроде сельдерея, но я решил, что будет простой способ заставить его просто сделать вызов командной строки, а не «привязываться к нему», чтобы он мог просто перемещаться прошлое, мне интересно, что я делаю что-то неправильно … спасибо за любой совет.

Я делаю звонок, как это сейчас

os.system("command_to_start_server") 

также попытался:

 response = os.popen("command_to_start_server") 

Я не уверен, но я думаю, что модуль подпроцесса с его Popen намного более гибкий, чем os.popen. Если я правильно помню, он включает в себя асинхронный процесс нереста, который, я думаю, является тем, что вы ищете.

Edit: Прошло некоторое время с тех пор, как я использовал модуль подпроцесса, но если я не ошибаюсь, subprocess.Popen немедленно возвращается, и только когда вы пытаетесь установить связь с процессом (например, чтение его вывода), используя subprocess.communicate, ваш ожидающий выхода, если его нет.

Вы можете использовать django-сельдерей . django-celery обеспечивает интеграцию сельдерея для Django. Сельдерей – очередь задач / заданий на основе распределенной передачи сообщений.

См. Этот http://ask.github.com/celery/getting-started/first-steps-with-django.html для учебника, как его использовать.

Пытаться:

 os.system("command_to_start_server &>/dev/null &")