AttributeError: module '__wsgi__' has no attribute 'application'
Поставил mod_wsgi-express, попробовал запустить сервер, ранее нормально работавший с Flask, получил ошибку 500.
Запускаю командой:
mod_wsgi-express start-server server.py --port 8081 --host localhost
Получаю следующий лог с ошибкой:
$ cat /tmp/mod_wsgi-localhost:8081:1000/error_log
[Mon Mar 26 03:28:55.639890 2018] [mpm_event:notice] [pid 19429:tid 140449802274688] AH00489: Apache/2.4.18 (Ubuntu) mod_wsgi/4.6.2 Python/3.5 configured -- resuming normal operations
[Mon Mar 26 03:28:55.639969 2018] [core:notice] [pid 19429:tid 140449802274688] AH00094: Command line: 'apache2 (mod_wsgi-express) -f /tmp/mod_wsgi-localhost:8081:1000/httpd.conf -D MOD_WSGI_WITH_LISTENER_HOST -D MOD_WSGI_MPM_ENABLE_EVENT_MODULE -D MOD_WSGI_MPM_EXISTS_EVENT_MODULE -D MOD_WSGI_MPM_EXISTS_WORKER_MODULE -D MOD_WSGI_MPM_EXISTS_PREFORK_MODULE -D FOREGROUND'
[Mon Mar 26 03:28:55.978568 2018] [wsgi:error] [pid 19431:tid 140449802274688] mod_wsgi (pid=19431): Failed to exec Python script file '/tmp/mod_wsgi-localhost:8081:1000/handler.wsgi'.
[Mon Mar 26 03:28:55.978608 2018] [wsgi:error] [pid 19431:tid 140449802274688] mod_wsgi (pid=19431): Exception occurred processing WSGI script '/tmp/mod_wsgi-localhost:8081:1000/handler.wsgi'.
[Mon Mar 26 03:28:55.979490 2018] [wsgi:error] [pid 19431:tid 140449802274688] Traceback (most recent call last):
[Mon Mar 26 03:28:55.979518 2018] [wsgi:error] [pid 19431:tid 140449802274688] File "/tmp/mod_wsgi-localhost:8081:1000/handler.wsgi", line 94, in <module>
[Mon Mar 26 03:28:55.979523 2018] [wsgi:error] [pid 19431:tid 140449802274688] recorder_directory=recorder_directory)
[Mon Mar 26 03:28:55.979530 2018] [wsgi:error] [pid 19431:tid 140449802274688] File "/usr/local/lib/python3.5/dist-packages/mod_wsgi/server/__init__.py", line 1414, in __init__
[Mon Mar 26 03:28:55.979534 2018] [wsgi:error] [pid 19431:tid 140449802274688] self.application = getattr(self.module, callable_object)
[Mon Mar 26 03:28:55.979552 2018] [wsgi:error] [pid 19431:tid 140449802274688] AttributeError: module '__wsgi__' has no attribute 'application'
mod_wsgi-express ставил через pip. Дистрибутив — Ubuntu 16.04. Сгенерированный handler.wsgi: https://pastebin.com/DPx5kgwK
Что ему не нравится в handler.wsgi?
Update: «Hello,world» из документации: https://modwsgi.readthedocs.io/en/develop/user-guides/quick-configuration-gui... заработал. Похоже, проблема в вызываемом приложении.
Ответ: По умолчанию Апач вызывает «application». В handler.wsgi это задаётся как callable_object = 'application'. В моём случае имя оказалось другим. Проблема решилась автозаменой в server.py. Также можно воспользоваться ключом --callable-object.