У меня есть графический интерфейс Kivy, запущенный проектом Django.Но он не работает на сервере Apache 2 (с mod_wsgi) - PullRequest
0 голосов
/ 18 сентября 2018

В настоящее время я работаю над проектом Django, который работает на Raspberry Pi с сенсорным экраном.Графический интерфейс Kivy отображается на сенсорном экране и может обновляться веб-интерфейсом, предоставленным Django.Взаимодействие с сенсорным экраном также может видеть пользователь сайта.Приложение Kivy (kivy.app.App) запускается в потоке

class SimpleKivyThread(threading.Thread):
    def __init__(self):
        Thread.__init__(self)
        self.app = SimpleApp()

    def run(self):
        self.app.run()

из модуля __init__.py моего приложения Django.

Поэтому, если я использую команду python3 manage.py runserver --noreload,Проект работает очень хорошо, возможна связь между приложением Django и приложением Kivy.Я должен использовать флаг --noreload для подавления автоматической перезагрузки кода, потому что это дублирует графический интерфейс с тем эффектом, что приложение Django не имеет доступа ни к одному из созданных графических интерфейсов.

Но если я хочу использовать егона сервере Apache 2 с mod_wsgi на моем Raspberry Pi (с Raspbian) error.log сначала показывает следующее:

[Tue Sep 18 01:08:27.963060 2018] [mpm_prefork:notice] [pid 440] AH00169: caught SIGTERM, shutting down
[Tue Sep 18 01:08:28.111606 2018] [mpm_prefork:notice] [pid 976] AH00163: Apache/2.4.25 (Raspbian) mod_wsgi/4.5.11 Python/3.5 configured -- resuming normal operations
[Tue Sep 18 01:08:28.111883 2018] [core:notice] [pid 976] AH00094: Command line: '/usr/sbin/apache2'

, и если я пытаюсь загрузить страницу из Apache, яполучите это в журнале:

[Tue Sep 18 01:11:11.520195 2018] [wsgi:error] [pid 979] [\x1b[1;32mINFO\x1b[0m   ] [Logger      ] Record log in /var/www/.kivy/logs/kivy_18-09-18_14.txt
[Tue Sep 18 01:11:11.520537 2018] [wsgi:error] [pid 979] [\x1b[1;32mINFO\x1b[0m   ] [Kivy        ] v1.11.0.dev0, git-9e742f3, 20180630
[Tue Sep 18 01:11:11.520922 2018] [wsgi:error] [pid 979] [\x1b[1;32mINFO\x1b[0m    ] [Python      ] v3.5.3 (default, Jan 19 2017, 14:11:04)
[Tue Sep 18 01:11:11.520944 2018] [wsgi:error] [pid 979] [GCC 6.3.0 20170124]
[Tue Sep 18 01:11:11.520986 2018] [wsgi:error] [pid 979]
[Tue Sep 18 01:11:11.586830 2018] [wsgi:error] [pid 979] [\x1b[1;32mINFO\x1b[0m   ] [Factory     ] 194 symbols loaded
[Tue Sep 18 01:11:12.355774 2018] [wsgi:error] [pid 979] [\x1b[1;32mINFO\x1b[0m   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_gif (img_pil, img_ffpyplayer ignored)
[Tue Sep 18 01:11:12.427827 2018] [wsgi:error] [pid 979] [\x1b[1;32mINFO\x1b[0m   ] [Text        ] Provider: sdl2
[Tue Sep 18 01:11:13.032137 2018] [wsgi:error] [pid 979] [\x1b[1;32mINFO\x1b[0m   ] [Window      ] Provider: egl_rpi
[Tue Sep 18 01:11:14.321146 2018] [wsgi:error] [pid 980] [\x1b[1;32mINFO\x1b[0m   ] [Logger      ] Record log in /var/www/.kivy/logs/kivy_18-09-18_15.txt
[Tue Sep 18 01:11:14.321466 2018] [wsgi:error] [pid 980] [\x1b[1;32mINFO\x1b[0m   ] [Kivy        ] v1.11.0.dev0, git-9e742f3, 20180630
[Tue Sep 18 01:11:14.321836 2018] [wsgi:error] [pid 980] [\x1b[1;32mINFO\x1b[0m   ] [Python      ] v3.5.3 (default, Jan 19 2017, 14:11:04)
[Tue Sep 18 01:11:14.321856 2018] [wsgi:error] [pid 980] [GCC 6.3.0 20170124]
[Tue Sep 18 01:11:14.321877 2018] [wsgi:error] [pid 980]
[Tue Sep 18 01:11:14.392945 2018] [wsgi:error] [pid 980] [\x1b[1;32mINFO\x1b[0m   ] [Factory     ] 194 symbols loaded
[Tue Sep 18 01:11:15.166843 2018] [wsgi:error] [pid 980] [\x1b[1;32mINFO\x1b[0m   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_gif (img_pil, img_ffpyplayer ignored)
[Tue Sep 18 01:11:15.246366 2018] [wsgi:error] [pid 980] [\x1b[1;32mINFO\x1b[0m   ] [Text        ] Provider: sdl2
[Tue Sep 18 01:11:15.924217 2018] [wsgi:error] [pid 980] [\x1b[1;32mINFO\x1b[0m   ] [Window      ] Provider: egl_rpi
[Tue Sep 18 01:11:17.353295 2018] [wsgi:error] [pid 982] [\x1b[1;32mINFO\x1b[0m   ] [Logger      ] Record log in /var/www/.kivy/logs/kivy_18-09-18_16.txt
[Tue Sep 18 01:11:17.353665 2018] [wsgi:error] [pid 982] [\x1b[1;32mINFO\x1b[0m   ] [Kivy        ] v1.11.0.dev0, git-9e742f3, 20180630
[Tue Sep 18 01:11:17.354092 2018] [wsgi:error] [pid 982] [\x1b[1;32mINFO\x1b[0m   ] [Python      ] v3.5.3 (default, Jan 19 2017, 14:11:04)
[Tue Sep 18 01:11:17.354116 2018] [wsgi:error] [pid 982] [GCC 6.3.0 20170124]
[Tue Sep 18 01:11:17.354141 2018] [wsgi:error] [pid 982]
[Tue Sep 18 01:11:17.426928 2018] [wsgi:error] [pid 982] [\x1b[1;32mINFO\x1b[0m   ] [Factory     ] 194 symbols loaded
[Tue Sep 18 01:11:18.302721 2018] [wsgi:error] [pid 982] [\x1b[1;32mINFO\x1b[0m   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_gif (img_pil, img_ffpyplayer ignored)
[Tue Sep 18 01:11:18.382900 2018] [wsgi:error] [pid 982] [\x1b[1;32mINFO\x1b[0m   ] [Text        ] Provider: sdl2
[Tue Sep 18 01:11:19.067466 2018] [wsgi:error] [pid 982] [\x1b[1;32mINFO\x1b[0m   ] [Window      ] Provider: egl_rpi
...

снова и снова с

[Tue Sep 18 01:11:20.520018 2018] [wsgi:error] [pid 977] Purge log fired. Analysing...
[Tue Sep 18 01:11:20.535182 2018] [wsgi:error] [pid 977] Purge 9 log files
[Tue Sep 18 01:11:20.535759 2018] [wsgi:error] [pid 977] Purge finished!

один раз.

"Нормальный" проект Django без сенсорного графического интерфейса действительно может работатьна сервере, так что это не моя проблема.Я думаю, что проблема в GUI.

Я также настроил .kivy/config.ini для пользователя www-data для работы с официальным 7-дюймовым сенсорным экраном Raspberry Pi. И я добавил файл .Xauthority с соответствующимПеременные окружения (для XAUTHORITY и DISPLAY) в окружениях Apache.

Мои вопросы:

Я что-то пропустил?

Возможно ли это сделать?с Apache?

Существуют ли альтернативы Apache, которые работают с этой программной архитектурой и средами?

Имеет ли значение, если я использую prefork, worker или event в качестве MPM?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...