python - loglevel - set timeout in gunicorn
La aplicaciĆ³n Flask Gunicorn no puede hacer que__name__ sea igual a ''__main__'' (1)
Python establece __name__
en "__main__"
cuando el script es el punto de entrada para el intérprete de Python. Dado que Gunicorn importa la secuencia de comandos que está ejecutando, esa secuencia de comandos no será el punto de entrada y, por lo tanto, no tendrá __name__
establecido en "__main__"
.
Lo tengo de /home/myname/myapp/app.py
:
from flask import Flask
app = Flask(__name__)
print __name__
@app.route(''/'')
def index():
return "Hello world!"
if __name__ == ''__main__'':
print ''in if''
app.run()
Cuando corro:
$ gunicorn app:app -b 127.0.0.2:8000
Dice:
2013-03-01 11:26:56 [21907] [INFO] Starting gunicorn 0.17.2
2013-03-01 11:26:56 [21907] [INFO] Listening at: http://127.0.0.2:8000 (21907)
2013-03-01 11:26:56 [21907] [INFO] Using worker: sync
2013-03-01 11:26:56 [21912] [INFO] Booting worker with pid: 21912
app
Entonces el __name__
de la aplicación es la app
. No __main__
como si fuera para ejecutar la declaración if.
Intenté poner un __init__.py
vacío en el directorio. Aquí está el nginx sites-enabled default
mi nginx sites-enabled default
:
server {
#listen 80; ## listen for ipv4; this line is default and implied
#listen [::]:80 default_server ipv6only=on; ## listen for ipv6
root /home/myname/myapp;
# Make site accessible from http://localhost/
server_name localhost;
location / {
proxy_pass http://127.0.0.2:8000;
}
}
Editar
... Mientras que esta aplicación imprime''Hello world''
cuando visito el sitio. El punto es que necesito __name__
para igualar ''__main__''
. También quiero saber por qué no y cómo hacer que sea igual __main__
. Editar 2
... Acabo de tener la epifanía de que no necesito ejecutarapp.run()
ya que para eso está Gunicorn. Duh. Pero aún me gustaría descubrir por qué __name__
no es ''__main__''