Значение __name__
зависит от того, как используется файл. Рассмотрим следующий файл с именем test.py
:
# test.py
print(__name__)
Если мы запустим файл напрямую, мы получим:
$ python test.py
__main__
Это выведет "__main__"
, поскольку интерпретатор запускает файл в качестве основной программы.
Вместо этого, если мы импортируем файл:
$ python -c "import test"
test
Будет напечатано test
, поскольку это имя импортируемого модуля.
Я предполагаю, что у вас есть приложение Cloud Run в файле с именем main.py
и что вы используете gunicorn
в качестве HTTP-сервера. Поэтому, когда вы указываете что-то вроде:
CMD exec gunicorn --bind :$PORT main:app
Это говорит gunicorn
об импорте переменной app
из файла main.py
, и, таким образом, __name__
всегда будет "main"
в этом файле .
В зависимости от того, что вы делаете в этом блоке if __name__ == "__main__"
, вы можете полностью исключить эту проверку и запускать код внутри нее всякий раз, когда вместо этого импортируется файл.