Python виртуальная среда не может быть сохранена при перезагрузке службы ODOO из-за достигнутого предельного времени - PullRequest
0 голосов
/ 15 марта 2020

Я работаю с Odoo12, запущенным пользовательским сервисом в Ubuntu 18.04 (в основном на основе этого руководства https://linuxize.com/post/how-to-deploy-odoo-12-on-ubuntu-18-04/). Используя systemctl, я могу нормально запускать, останавливать, перезапускать сервис.

Проблема в том, что сервер Odoo (в режиме феникса) останавливается, когда работник убивается из-за достигнутого лимита времени процессора, служба прекращено с некоторыми странными ошибками. После исследования я обнаружил, что двоичный файл python в виртуальной среде больше не используется для перезапуска сервера Odoo, в результате чего многие необходимые для Odoo модули не могут быть загружены должным образом.

Вот некоторые фрагменты кода

  1. Сервисный блок
[Unit]
Description=Odoo12

[Service]
Type=simple
SyslogIdentifier=xxx_odoo12
PermissionsStartOnly=true
ExecStart=/opt/odoo12/odoo-venv/bin/python3 /opt/odoo12/odoo/odoo-bin -c  /opt/odoo12/conf/odoo.conf
StandardOutput=journal+console

[Install]
WantedBy=multi-user.target
Odoo bin (с некоторым отладочным кодом для устранения причины проблемы)
#!/opt/odoo12/odoo-venv/bin/python3

# set server timezone in UTC before time module imported
__import__('os').environ['TZ'] = 'UTC'
#import odoo
import sys
import os

print('--------------------------Python Odoo path: ', sys.path)
sys.stdout.flush()

import odoo

if __name__ == "__main__":
    odoo.cli.main()
Журнал некоторых услуг
Mar 15 10:19:05 ip-172-31-35-210 xxx_odoo12[2140]: --------------------------Python Odoo path:  ['/opt/odoo12/odoo', '/opt/portable_platform/python/lib/python37.zip', '/opt/portable_platform/python/lib/python3.7', '/opt/portable_platform/python/lib/python3.7/lib-dynload', '/opt/odoo12/odoo-venv/lib/python3.7/site-packages']
Mar 15 10:20:07 ip-172-31-35-210 xxx_odoo12[2140]: --------------------------Python Odoo path:  ['/opt/odoo12/odoo', '/opt/portable_platform/python/lib/python37.zip', '/opt/portable_platform/python/lib/python3.7', '/usr/lib/python3.7/lib-dynload', '/opt/portable_platform/python/lib/python3.7/site-packages']
Mar 15 10:20:07 ip-172-31-35-210 xxx_odoo12[2140]: Traceback (most recent call last):
Mar 15 10:20:07 ip-172-31-35-210 xxx_odoo12[2140]:   File "/opt/odoo12/odoo/odoo-bin", line 13, in <module>
Mar 15 10:20:07 ip-172-31-35-210 xxx_odoo12[2140]:     import odoo
Mar 15 10:20:07 ip-172-31-35-210 xxx_odoo12[2140]:   File "/opt/odoo12/odoo/odoo/__init__.py", line 73, in <module>
Mar 15 10:20:07 ip-172-31-35-210 xxx_odoo12[2140]:     import babel
Mar 15 10:20:07 ip-172-31-35-210 xxx_odoo12[2140]: ModuleNotFoundError: No module named 'babel'
Mar 15 10:20:07 ip-172-31-35-210 systemd[12816]: xxx_odoo12.service: Main process exited, code=exited, status=1/FAILURE
Mar 15 10:20:07 ip-172-31-35-210 systemd[12816]: xxx_odoo12.service: Failed with result 'exit-code'.

Вы можете заметить разницу между первыми 2 строками журнала фрагмента. Первый выводится, когда я запускаю службу вручную командой systemctl. Второй - результат перезапущенного сервиса, о котором я понятия не имею ...

Есть идеи, чтобы помочь?

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