¿Por qué el script de ejecución manage.py se ejecuta dos veces cuando se usa bajo __name__ == “__main__”

Gol. Cuando inicie django framework, también inicie otros scripts PY que se basan en objetos django. Obtenga el servidor y el número de puerto de un archivo de configuración.

Problema: el Popen parece funcionar dos veces y no estoy seguro de por qué.

#!/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()) 

Salidas:

 16200 end 29716 end Validating models... 

Este es mi primer bash, así que si alguien sabe de una mejor manera de hacerlo, no dude en hacérmelo saber.

Gracias a todos.

Su código está runserver comando runserver , lo que hace que Django use el recargador , lo que a su vez significa que su código se vuelve a ejecutar como si se ingresara en la línea de comandos. Si usa --noreload al iniciar el runserver el problema desaparecerá.

Básicamente, la misma instalación que recarga automáticamente Django cuando modifica sus archivos de origen, lo cual es muy útil en el desarrollo, ahora hace que su código se ejecute dos veces.