Перезапуск службы Odoo и обновление с помощью systemctl

Служба Odoo запущена пользователем systemctl start odoo. Я использую Centos. Когда я хочу обновить свой измененный код *.py, я делал это так:

1. systemctl stop odoo
Then I update my module and database by useing this:
2. ./odoo.py -c openerp-server.conf -u <my_module_name> -d <database_name>
3. stop service by ctrl + c
4. systemctl start odoo

Но это очень долгий и неудобный способ обновления изменений.

Есть ли более короткий способ выполнить те же операции более коротким способом?


person fueggit    schedule 19.03.2018    source источник


Ответы (2)


Odoo с сервисом

Вы можете внести изменения следующим образом:

  1. Остановить сервер: systemctl stop odoo
  2. Запустите сервер: systemctl start odoo. Здесь .py обновляются
  3. Если вам также необходимо обновить xml или некоторые переводы, вы можете нажать кнопку Update в интерфейсе Odoo, в форме описания модуля.

Примечание. Существуют модули для перезагрузки определенных XML-представлений. Если вас это интересует, я могу посмотреть, чтобы проверить, если я найду его.

Odoo без сервиса

Если вы разрабатываете на своем локальном компьютере, вам не нужно использовать systemctl. Просто запустите Odoo напрямую с помощью odoo.py, и вы сразу увидите изменения:

./odoo.py -c openerp-server.conf -u <my_module_name> -d <database_name>

Автоперезагрузка файлов Python

Существует еще один способ перезагрузить файлы Python, когда они изменились. Проверьте этот другой ответ:

Обычно, если вы меняете средства кода Python, вам необходимо перезапустить сервер, чтобы применить новые изменения.

Параметр --auto-reload включен означает, что вам не нужно перезапускать сервер. Он позволяет автоматически перезагружать файлы python и xml без перезагрузки сервера. Требуется pyinotify. Это модуль Python для мониторинга изменений файловых систем.

Просто добавьте --auto-reload в файл конфигурации. По умолчанию значение будет "false". Вам не нужно передавать никаких дополнительных аргументов. --auto-reload достаточно. Если все настроено и работает правильно, вы получите

openerp.service.server: Watching addons folder /opt/odoo/v8.0/addons
openerp.service.server: AutoReload watcher running in the server log. Don't forget to install pyinotify package.

Но в odoo 10 просто добавьте параметр --dev=reload

--dev=DEV_MODE      Enable developer mode. Param: List of options
                    separated by comma. Options : all,
                    [pudb|wdb|ipdb|pdb], reload, qweb, werkzeug, xml
person ChesuCR    schedule 19.03.2018
comment
так, например: я меняю my_module_a и my_module_b. В openerp-server.conf у меня нет фильтра базы данных, и я использую 3 базы данных. Итак, когда я запускаю systemctl start odoo, во всех трех базах данных .py будет обновляться? Надеюсь, вы понимаете мой вопрос. - person fueggit; 19.03.2018
comment
Как я понимаю, после перезапуска службы (systemctl start odoo) .py автоматически обновляются в зависимости от отфильтрованной базы данных в файле odoo-service.conf? - person fueggit; 19.03.2018
comment
Да, если вы обновите файлы Python, все базы данных одного и того же экземпляра будут обновлены. Если вы хотите обновить файлы xml, вам нужно сделать это вручную в каждой базе данных, которую вы хотите. - person ChesuCR; 19.03.2018

Failed to stop odoo.service: Access denied. See system logs and 'systemctl status odoo.service' for details.

Изначально я получил эту ошибку. Затем попробовал с su и получил это.

Failed to stop odoo.service: Unit odoo.service not loaded.

Меня беспокоит, как определить идеальный файл, с помощью которого я могу перезапустить службы Odoo после установки нового модуля.

person Malhar Jivrajani    schedule 18.06.2021