10

我有这个/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()

当我运行时:

$ gunicorn app:app -b 127.0.0.2:8000

它说:

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

所以__name__应用程序是app. 不像__main__我需要它来运行 if 语句。 我试着在目录中
放一个空的。__init__.py这是我的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;
        }
}

编辑

...虽然这个应用程序在我访问该网站时打印出来。'Hello world'关键是我需要__name__equal '__main__'。我也只是想知道为什么它没有以及如何使它相等__main__

编辑 2

......我只是顿悟了,我不需要跑步app.run(),因为这就是 Gunicorn 的目的。呃。但我仍然想弄清楚为什么__name__不是'__main__'

4

1 回答 1

16

Python 设置为何__name__"__main__"脚本是 Python 解释器的入口点。由于 Gunicorn 导入它正在运行的脚本,因此脚本将不是入口点,因此不会__name__设置为"__main__".

于 2013-03-02T15:29:09.743 回答