Почему скрипт выполнения manage.py запускается дважды при его использовании, если __name__ == "__main__"

Цель. При запуске django framework также запускаются другие сценарии PY, которые полагаются на объекты django. Получите номер сервера и порта из файла конфигурации.

Проблема: Попэн, кажется, работает дважды, и я не уверен, почему?

#!/usr/bin/env python import os import sys import subprocess os.environ.setdefault("DJANGO_SETTINGS_MODULE", "test.localsettings") from django.core.management import execute_from_command_line def getargs(): try: f = open("config") data = [] for line in f: data.append(line) f.close() server = data[0].rstrip() port = data[1] newargs = ['lmanage.py', 'runserver', server + ':' + port] return newargs except Exception as e: print e pass if __name__ == "__main__": #Launching Checker try: checker = subprocess.Popen([sys.executable, os.path.join(os.getcwd() + "checker.py")], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE) print checker.pid except Exception as e: print e pass print "end" execute_from_command_line(getargs()) 

Выходы:

 16200 end 29716 end Validating models... 

Это моя первая попытка, поэтому, если кто-нибудь знает, как лучше это сделать, тогда не стесняйтесь, дайте мне знать.

Всем спасибо.

  • Как использовать подпроцесс popen Python
  • Использовать python для запуска сценария оболочки с помощью Popen ведет себя по-разному в командной строке python и в реальной программе
  • Popen и python
  • Кудрявые скобки в python Popen
  • Python: подпроцесс и запуск сценария bash с несколькими аргументами
  • Как получить выход из subprocess.Popen ()
  • Python - захват Popen stdout И отображение на консоли?
  • Подпроцесс Python.Popen With Shell = True. Дождитесь завершения
  • One Solution collect form web for “Почему скрипт выполнения manage.py запускается дважды при его использовании, если __name__ == "__main__"”

    В вашем коде запускается команда runserver , которая заставляет Django использовать перезагрузку , что, в свою очередь, означает, что ваш код повторно выполняется, как если бы он был введен в командной строке. Если вы используете --noreload при запуске runserver проблема исчезнет.

    В принципе, тот же объект, который автоматически перезагружает Django при изменении исходных файлов, который так полезен в разработке, теперь вызывает выполнение кода в два раза.

    Python - лучший язык программирования в мире.