Nano Hash - криптовалюты, майнинг, программирование

Django с Apache и mod_wsgi: ошибка тайм-аута

Я пытаюсь развернуть приложение Django на сервере CentOS 7 с Apache и mod_wsgi. Приложение использует библиотеку plotly для создания графиков, а plotly использует orca приложение для экспорта созданного графика в изображение. Тестировал приложение на встроенном веб-сервере django - все работает отлично. Итак, я настроил Apache и mod_wsgi в соответствии с официальной документацией. Когда я подключаюсь к Apache, приложение работает, но экспорт графиков невозможен. Браузер выдает ошибку тайм-аута шлюза. Я вставил сообщения регистратора в код, который создает и экспортирует графики. Код работает до этой строки:

static_image_bytes = plotly.io.to_image(figure, format='png', width=800, height=450) 

Эта строка должна запускать локальное приложение Orca и преобразовывать объект figure в байты изображения PNG. Orca требует сервер отображения X11, а CentOS устанавливается без графического интерфейса. Я использую Xvfb для эмуляции X11 (согласно странице Orca на github). Приложение Orca - это AppImage, загруженный с github.

/ bin / orca

#!/bin/bash
echo "`date` - ORCA STARTING with $@" >> /tmp/orca.log
xvfb-run /usr/u/s/orca-1.2.1-x86_64.AppImage "$@"
echo "`date` - ORCA FINISHED" >> /tmp/orca.log  

Кроме того, я попытался связать /bin/orca напрямую с AppImage, используя:

ln -s /usr/u/s/orca-1.2.1-x86_64.AppImage /bin/orca

и добавив эту строку в свой код:

plotly.io.orca.config.use_xvfb = True  

error_log Apache:

[Thu Jul 11 14:15:27.353433 2019] [wsgi:info] [pid 6289] mod_wsgi (pid=6289): Attach interpreter ''.
[Thu Jul 11 14:15:27.356811 2019] [wsgi:info] [pid 6290] mod_wsgi (pid=6290): Attach interpreter ''.
[Thu Jul 11 14:15:27.373538 2019] [wsgi:info] [pid 6282] mod_wsgi (pid=6282, process='myapp', application=''): Loading Python script file '/usr/u/s/myapp/myapp/wsgi.py'.
[Thu Jul 11 14:15:27.380468 2019] [wsgi:info] [pid 6285] mod_wsgi (pid=6285): Adding '/usr/u/s/myapp' to path.
[Thu Jul 11 14:15:27.400423 2019] [wsgi:info] [pid 6283] mod_wsgi (pid=6283): Adding '/usr/u/s/myapp' to path.
[Thu Jul 11 14:15:27.401219 2019] [wsgi:info] [pid 6283] mod_wsgi (pid=6283, process='myapp', application=''): Loading Python script file '/usr/u/s/myapp/myapp/wsgi.py'.
[Thu Jul 11 14:15:27.419272 2019] [wsgi:info] [pid 6284] mod_wsgi (pid=6284): Adding '/usr/u/s/myapp' to path.
[Thu Jul 11 14:15:27.420060 2019] [wsgi:info] [pid 6284] mod_wsgi (pid=6284, process='myapp', application=''): Loading Python script file '/usr/u/s/myapp/myapp/wsgi.py'.
[Thu Jul 11 14:15:27.422329 2019] [wsgi:info] [pid 6285] mod_wsgi (pid=6285, process='myapp', application=''): Loading Python script file '/usr/u/s/myapp/myapp/wsgi.py'.
[Thu Jul 11 14:15:33.050402 2019] [wsgi:info] [pid 6419] mod_wsgi (pid=6419): Initializing Python.
[Thu Jul 11 14:15:33.077239 2019] [wsgi:info] [pid 6419] mod_wsgi (pid=6419): Attach interpreter ''.
[Thu Jul 11 14:25:38.116842 2019] [wsgi:error] [pid 6287] [client 192.168.1.12:57406] Timeout when reading response headers from daemon process 'myapp': /usr/u/s/myapp/myapp/wsgi.py, referer: http://192.168.1.13/myapp/reports/new/
[Thu Jul 11 14:25:38.116918 2019] [reqtimeout:info] [pid 6287] [client 192.168.1.12:57406] AH01382: Request body read timeout

Apache httpd.conf


LogLevel info
TimeOut 600

LoadModule wsgi_module modules/mod_wsgi.so
WSGISocketPrefix /var/run/httpd/wsgi

WSGIDaemonProcess myapp python-home=/usr/u/s/env/myapp python-path=/usr/u/s/myapp threads=1 processes=32
WSGIScriptAlias /myapp /usr/u/s/myapp/myapp/wsgi.py process-group=myapp application-group=%{GLOBAL}

<Directory /usr/u/s/myapp>
Require all granted
</Directory>

SELinux установлен в разрешающий режим.

Я гуглил и искал stackoverflow часами, пробуя различные решения и конфигурации для mod_wsgi, но ни одно из них, похоже, ничего не меняет. Пожалуйста помоги. Спасибо за любые идеи.


  • попробуйте этот serverfault.com/questions/514242/ 12.07.2019
  • @DEEPAKKUMAR Я уже пробовал это, WSGIApplicationGroup установлена ​​как опция application-group в WSGIScriptAlias 12.07.2019

Ответы:


1

Я не знаю, решает ли следующее вопрос OP, но на всякий случай это полезно для кого-то, я добавляю некоторый контекст (я не уверен, что означает комментарий OP выше).

Я копал за волосы, пытаясь заставить библиотеку Google Python Client Dialogflow работать под Apache с WSGI и SElinux. Я обвинял SElinux, но вышеприведенный комментарий Дипака Кумара дал мне решение.

Добавьте в конфигурацию WSGI Apache строку

WSGIApplicationGroup %{GLOBAL}

как предлагается здесь.

26.11.2020
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..