Приложение Flask на uwsgi выдает ошибку TypeError: объект Flask не повторяется

Я использую приложение Python/Flask на Python 3.5 в virtualenv на Arch Linux. Приложение запускается сервером uwsgi, который подключен через сокет к Nginx.

Когда я выполняю запрос, я получаю следующую ошибку uwsgi:

Mar 23 02:38:19 saltminion1.local uwsgi[20720]: TypeError: 'Flask' object is not iterable

Это вызываемая функция, которую uwsgi настроил на использование:

def create_app(config=None, import_name=None):
    if import_name is None:
        import_name = DefaultConfig.PROJECT

    app = Flask(import_name, instance_path=INSTANCE_FOLDER_PATH, instance_relative_config=True)

    configure_app(app, config)
    configure_database(app)
    configure_logging(app)
    configure_error_handlers(app)
    configure_blueprints(app)

    return app

Все работает хорошо, когда я запускаю приложение, используя встроенный HTTP-сервер, как на локальной рабочей станции OS X, так и на бродячих блоках Arch/Ubuntu.

Проблема: после добавления отладочных операторов стало ясно, что ошибка возникает в какой-то момент в самом коде Flask, а не в моем приложении. Как я могу получить трассировку стека здесь для устранения неполадок лучше?

2 ответа

Решение

Приложение WSGI (которым является Flask) - это вызываемый объект. Вот что uWSGI ожидает передать callable, Вы передаете фабрику приложений, которая также может быть вызвана, но вам нужно передать ее в результате этого вызова, потому что фабрика приложений не является приложением WSGI.

Заводская функция может быть вызвана непосредственно в конфигурации. module а также callable Варианты также могут быть объединены в просто module,

module = my_app:create_app()

Это говорит uWSGI для импорта my_app, находить my_app.create_appи позвони. Результатом этого является приложение Flask, которое фактически используется в качестве вызываемого.

Нашел ответ: я настроил uwsgi с callable = create_app которая была функцией, которая возвращает Flask "приложение". Но на самом деле uwsgi хочет объект приложения.

Другие вопросы по тегам