1 Востаннє редагувалося frz (26.02.2021 12:54:39)

Тема: mod_wsgi для Python3 на CentOS

Дана проблема: під CentOS mod_wsgi "з коробки" існує лише для Python2. Переписувати весь код на Python2 щоб він працював в браузері якось не хочеться.

$ cat /etc/os-release
NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"

Зніс рідний mod_wsgi

sudo yum uninstall mod_wsgi

Пробую перезавантажити апач

$ sudo service httpd restart
Redirecting to /bin/systemctl restart httpd.service
Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.
sudo systemctl status httpd.service
...
httpd[8867]: Invalid command 'WSGIDaemonProcess'

Зрозуміло, оскільки в мене в конфігурації апача вже є посилання на проект із wsgi.

Тепер думаю як діяти далі. Зрозуміло, що треба збирати пакет вручну; тільки поки що незрозуміло як саме. Якби знав де впаду - підстелив би соломки; тобто попрохав би девопса одразу ж ставити убунту; але в нього зараз ще глибока ніч, а мені о 16:45 на стендапі треба буде щось розповісти...

----

Upd: Пробую скористатися цією відповіддю на stackoverflow: https://stackoverflow.com/a/38287125

----

Upd: облом на передостанньому пункті:

$ make
/usr/bin/apxs -c -I/usr/include/python3.7m -DNDEBUG -D_GNU_SOURCE  -Wc,-g -Wc,-O2  src/server/mod_wsgi.c src/server/wsgi_*.c -L/usr/lib64 -L/usr/lib64/python3.7/config-3.7m  -lpython3.7m -lcrypt -lpthread -ldl  -lutil -lm
"my" variable $installbuilddir masks earlier declaration in same scope at /usr/bin/apxs line 49.
/usr/lib64/apr-1/build/libtool --silent --mode=compile gcc -prefer-pic -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic  -DLINUX -D_REENTRANT -D_GNU_SOURCE -pthread -I/usr/include/httpd  -I/usr/include/apr-1   -I/usr/include/apr-1  -g -O2 -I/usr/include/python3.7m -DNDEBUG -D_GNU_SOURCE  -c -o src/server/mod_wsgi.lo src/server/mod_wsgi.c && touch src/server/mod_wsgi.slo
In file included from src/server/mod_wsgi.c:22:0:
src/server/wsgi_python.h:24:10: fatal error: Python.h: No such file or directory
 #include <Python.h>
          ^~~~~~~~~~
compilation terminated.
apxs:Error: Command failed with rc=65536
.
make: *** [src/server/mod_wsgi.la] Error 1

Думаю що робити далі...

----

Upd: пробую тут: https://stackoverflow.com/questions/193 … gi-for-py3

і тут: https://stackoverflow.com/a/54721777

і тут: https://stackoverflow.com/a/21530768

----

Нарешті спрацювало: https://stackoverflow.com/a/44612205

Подякували: leofun011

2 Востаннє редагувалося frz (01.03.2021 19:41:18)

Re: mod_wsgi для Python3 на CentOS

Ось така кака при спробі викликати запит до Snowflake:

[Mon Mar 01 17:36:33.898416 2021] [wsgi:warn] [pid 27369] mod_wsgi (pid=27369): Callback registration for signal 2 ignored.
[Mon Mar 01 17:36:33.899292 2021] [wsgi:warn] [pid 27369]   File "/usr/local/lib64/python3.7/site-packages/flask/app.py", line 2464, in __call__
[Mon Mar 01 17:36:33.899302 2021] [wsgi:warn] [pid 27369]     return self.wsgi_app(environ, start_response)
[Mon Mar 01 17:36:33.899308 2021] [wsgi:warn] [pid 27369]   File "/usr/local/lib64/python3.7/site-packages/flask/app.py", line 2447, in wsgi_app
[Mon Mar 01 17:36:33.899311 2021] [wsgi:warn] [pid 27369]     response = self.full_dispatch_request()
[Mon Mar 01 17:36:33.899315 2021] [wsgi:warn] [pid 27369]   File "/usr/local/lib64/python3.7/site-packages/flask/app.py", line 1950, in full_dispatch_request
[Mon Mar 01 17:36:33.899317 2021] [wsgi:warn] [pid 27369]     rv = self.dispatch_request()
[Mon Mar 01 17:36:33.899321 2021] [wsgi:warn] [pid 27369]   File "/usr/local/lib64/python3.7/site-packages/flask/app.py", line 1936, in dispatch_request
[Mon Mar 01 17:36:33.899324 2021] [wsgi:warn] [pid 27369]     return self.view_functions[rule.endpoint](**req.view_args)
[Mon Mar 01 17:36:33.899327 2021] [wsgi:warn] [pid 27369]   File "/var/www/html/flaskapp/app/__init__.py", line 581, in private_snowflake_to_gdrive
[Mon Mar 01 17:36:33.899330 2021] [wsgi:warn] [pid 27369]     snowflake_csv2(data, filename, check_delimiter, var_limit)
[Mon Mar 01 17:36:33.899333 2021] [wsgi:warn] [pid 27369]   File "/var/www/html/flaskapp/app/__init__.py", line 279, in snowflake_csv2
[Mon Mar 01 17:36:33.899335 2021] [wsgi:warn] [pid 27369]     cs.execute(custom_query)
[Mon Mar 01 17:36:33.899339 2021] [wsgi:warn] [pid 27369]   File "/usr/local/lib64/python3.7/site-packages/snowflake/connector/cursor.py", line 548, in execute
[Mon Mar 01 17:36:33.899341 2021] [wsgi:warn] [pid 27369]     _is_put_get=_is_put_get)
[Mon Mar 01 17:36:33.899345 2021] [wsgi:warn] [pid 27369]   File "/usr/local/lib64/python3.7/site-packages/snowflake/connector/cursor.py", line 382, in _execute_helper
[Mon Mar 01 17:36:33.899348 2021] [wsgi:warn] [pid 27369]     signal.signal(signal.SIGINT, interrupt_handler)
[Mon Mar 01 17:36:34.250626 2021] [wsgi:warn] [pid 27369] mod_wsgi (pid=27369): Callback registration for signal 2 ignored.
[Mon Mar 01 17:36:34.250788 2021] [wsgi:warn] [pid 27369]   File "/usr/local/lib64/python3.7/site-packages/flask/app.py", line 2464, in __call__
[Mon Mar 01 17:36:34.250794 2021] [wsgi:warn] [pid 27369]     return self.wsgi_app(environ, start_response)
[Mon Mar 01 17:36:34.250799 2021] [wsgi:warn] [pid 27369]   File "/usr/local/lib64/python3.7/site-packages/flask/app.py", line 2447, in wsgi_app
[Mon Mar 01 17:36:34.250802 2021] [wsgi:warn] [pid 27369]     response = self.full_dispatch_request()
[Mon Mar 01 17:36:34.250806 2021] [wsgi:warn] [pid 27369]   File "/usr/local/lib64/python3.7/site-packages/flask/app.py", line 1950, in full_dispatch_request
[Mon Mar 01 17:36:34.250808 2021] [wsgi:warn] [pid 27369]     rv = self.dispatch_request()
[Mon Mar 01 17:36:34.250812 2021] [wsgi:warn] [pid 27369]   File "/usr/local/lib64/python3.7/site-packages/flask/app.py", line 1936, in dispatch_request
[Mon Mar 01 17:36:34.250815 2021] [wsgi:warn] [pid 27369]     return self.view_functions[rule.endpoint](**req.view_args)
[Mon Mar 01 17:36:34.250818 2021] [wsgi:warn] [pid 27369]   File "/var/www/html/flaskapp/app/__init__.py", line 581, in private_snowflake_to_gdrive
[Mon Mar 01 17:36:34.250828 2021] [wsgi:warn] [pid 27369]     snowflake_csv2(data, filename, check_delimiter, var_limit)
[Mon Mar 01 17:36:34.250832 2021] [wsgi:warn] [pid 27369]   File "/var/www/html/flaskapp/app/__init__.py", line 279, in snowflake_csv2
[Mon Mar 01 17:36:34.250834 2021] [wsgi:warn] [pid 27369]     cs.execute(custom_query)
[Mon Mar 01 17:36:34.250837 2021] [wsgi:warn] [pid 27369]   File "/usr/local/lib64/python3.7/site-packages/snowflake/connector/cursor.py", line 548, in execute
[Mon Mar 01 17:36:34.250840 2021] [wsgi:warn] [pid 27369]     _is_put_get=_is_put_get)
[Mon Mar 01 17:36:34.250844 2021] [wsgi:warn] [pid 27369]   File "/usr/local/lib64/python3.7/site-packages/snowflake/connector/cursor.py", line 401, in _execute_helper
[Mon Mar 01 17:36:34.250846 2021] [wsgi:warn] [pid 27369]     signal.signal(signal.SIGINT, original_sigint)

І не вилітає ніяка помилка, лише warning, однак запит так і висить без результатів, пізніше вибиває по таймауту (таймаут великий) який я навмисне встановив аби не висіло вічно.

3

Re: mod_wsgi для Python3 на CentOS

тут наче щось на цю тему є

4

Re: mod_wsgi для Python3 на CentOS

Прибрав warning за допомогою цієї відповіді: https://stackoverflow.com/a/24539615

Інший користувач також скаржиться що зв'язка snowflake python connector + mod_wgsi не працює, запит просто висне без жодної помилки.
https://stackoverflow.com/questions/662 … onse-issue