odoo以开发者模式运行的话,能自动检测所有的addons目录的代码变动情况自动进行reload
这个机制对于python代码来说是够用的,但是对csv安全规则、xml数据及视图模版来说还需要更新模块才能使其生效
今天由于逐个测试安全规则条目,不断的手工更新模块不胜其烦,只好深入研究一下
odoo9开始已经将开发者模式依赖的pyinotify替换为watchdog,可能是后者的应用范围更广把,不仅提供python库,还附带shell工具
那就学习下这个叫watchmedo的命令行工具吧
(python)[srj@x1c odoo9]$ watchmedo --help
usage: watchmedo [-h] [--version]
{tricks-from,tricks-generate-yaml,log,shell-command,auto-restart}
...
positional arguments:
{tricks-from,tricks-generate-yaml,log,shell-command,auto-restart}
tricks-from Subcommand to execute tricks from a tricks
configuration file. :param args: Command line argument
options.
tricks-generate-yaml
Subcommand to generate Yaml configuration for tricks
named on the command line. :param args: Command line
argument options.
log Subcommand to log file system events to the console.
:param args: Command line argument options.
shell-command Subcommand to execute shell commands in response to
file system events. :param args: Command line argument
options.
auto-restart Subcommand to start a long-running subprocess and
restart it on matched events. :param args: Command
line argument options.
optional arguments:
-h, --help show this help message and exit
--version show program's version number and exit
看到auto-restart参数后真是让人眼前一亮,根据提示继续学习二级参数
(python)[srj@x1c odoo9]$ watchmedo auto-restart -h
usage: watchmedo auto-restart [-h] [-d directory] [-p PATTERNS]
[-i IGNORE_PATTERNS] [-D] [-R]
[--interval TIMEOUT] [--signal SIGNAL]
[--kill-after KILL_AFTER]
command [arg [arg ...]]
Subcommand to start a long-running subprocess and restart it
on matched events.
:param args:
Command line argument options.
positional arguments:
command Long-running command to run in a subprocess.
arg Command arguments. Note: Use -- before the command
arguments, otherwise watchmedo will try to interpret
them. (default: -)
optional arguments:
-h, --help show this help message and exit
-d directory, --directory directory
Directory to watch. Use another -d or --directory
option for each directory. (default: -)
-p PATTERNS, --pattern PATTERNS, --patterns PATTERNS
matches event paths with these patterns (separated by
;). (default: '*')
-i IGNORE_PATTERNS, --ignore-pattern IGNORE_PATTERNS, --ignore-patterns IGNORE_PATTERNS
ignores event paths with these patterns (separated by
;). (default: '')
-D, --ignore-directories
ignores events for directories (default: False)
-R, --recursive monitors the directories recursively (default: False)
--interval TIMEOUT, --timeout TIMEOUT
use this as the polling interval/blocking timeout
(default: 1.0)
--signal SIGNAL stop the subprocess with this signal (default SIGINT)
(default: 'SIGINT')
--kill-after KILL_AFTER
when stopping, kill the subprocess after the specified
timeout (default 10) (default: 10.0)
真是太强大了,本以为还要写点小代码什么的,没想到几个选项就可以灵活组合出一个小型的监控工具
1
watchmedo auto-restart -R -p="*.py;*.xml;*.csv" -d /home/srj/Git/Odoo/custom_addons/account_simple/ -- ./odoo.py -c c.conf -d test9 -u account_simple
-R是目录递归监控
-p是文件模式匹配,主要是排除前端资源和pyc
-d是指定监控目录
–是watchmedo与odoo各自的命令行参数分割线
至此odoo的模块开发效率又提高了一个层次:)