Это необходимо в любом скрипте, на который ссылается непосредственно ваш app.yaml
.
Каждый раз, когда App Engine требуется отправить запрос к одному из ваших сценариев, он выполняет следующие шаги:
- Был ли скрипт импортирован раньше? Если нет, просто импортируйте его и остановите.
- Если скрипт был импортирован ранее, есть ли у него функция с именем
main
? Если нет, импортируйте его снова и остановите.
- Выполнить
main
функцию скрипта.
Причина, по которой это происходит, заключается в том, что импорт модулей является относительно дорогим, и нет смысла повторно импортировать их для каждого отдельного запроса. Таким образом, он обеспечивает оптимизацию: если вы предоставите функцию с именем main
, при запросах после первого она просто выполнит эту функцию вместо повторного импорта сценария. Раздел if __name__ == "__main__":
предназначен для обнаружения первого импорта скрипта и выполнения main
вручную для этого первого запроса.
В двух словах, ответ заключается в том, что вы можете опустить как main
, так и if
, или включить их оба. Если вы их пропустите, ваше приложение будет несколько менее эффективным, но вы столкнетесь с проблемами только в том случае, если вы включите одно из двух, а не другое.