переменная __name__ равна «wsgi» вместо «__main__» - PullRequest
2 голосов
/ 06 января 2020

У меня есть файл wsgi, в котором есть строка:

wsgi.py

if __name__ == "__main__":
    app.run()

Но сегодня мой сервер не запускался, и когда я печатал __name__, увидел, что это равно "wsgi" без причины. Я запускаю свой сервер как «sudo systemctl restart myserver.service»

myserver.ini

module = wsgi:app

master = true
processes = 3

socket = /var/www/myserver/myserver.sock
chmod-socket = 660
vacuum = true

die-on-term = true
logto = /var/www/myserver/server.log
enable-threads = true

myserver.service

Description=uWSGI instance to serve myserver
After=network.target

[Service]
User=savvasenok
Group=www-data
WorkingDirectory=/var/www/myserver
Environment="PATH=/home/savvasenok/MyServerEnv/bin"
ExecStart=/home/savvasenok/MyServerEnv/bin/uwsgi --ini /var/www/myserver/myserver.ini

[Install]
WantedBy=multi-user.target

1 Ответ

1 голос
/ 06 января 2020

Как поясняется в здесь :

Если исходный файл выполняется как основная программа, интерпретатор задает для переменной __name__ значение “__main__” , Если этот файл импортируется из другого модуля, name будет установлено на имя модуля.

Таким образом, причина в том, что вы используете модуль python (или файл ) который импортирует wsgi. В вашем случае я думаю, что вы импортировали wsgi в модуль /home/savvasenok/MyServerEnv/bin/uwsgi, который вы сидели как ExecStart и выполняете.

Вы также можете проверить этот ответ для получения дополнительной информации.

...