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")
- Как поймать вывод функции matlab из python
- Как я могу получить python в командной строке в Windows?
- В чем разница между запуском ./file.py и python file.py?
- Как написать вывод скрипта в файл и в командной строке?
- Получение вывода команды скрытой консоли?
Я не уверен, но я думаю, что модуль подпроцесса с его 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 &")
- Какая хорошая командная структура командной строки для Python 2 и 3?
- Перенаправить вывод интерактивных команд python / ipython в файлы или переменные
- sys.argv не принимает предоставленный аргумент в python 3
- Выполнение командной строки в другой папке
- Получить нерасширенный аргумент из командной строки bash
- Сохранять историю команд между (i) сеансами python
- Bash: переменная в одиночной кавычке
- Получить путь к текущему TTY в Python
- Python sys.argv вне диапазона, не понимаю, почему