现象接上一篇,在成功实现单一实例多库模式下定时任务的问题后,现在可以实现多个库的定时任务跑起来了。但是发现在任务跑几次后就不再执行了,每次重启odoo实例就会恢复。但是很快又不行了。分析查看进程发现,后台开启的两个定时任务线程直接消失了。。。查看日志,有段报错,如下:fordb_name,registryinregistries.d.items():RuntimeError:OrderedDictmutatedduringiteration可以定位到问题出现server.py文件中的cron_thread函数上。经过实验发现,python3版本的OrderedDict对象在迭代的过程中如果新增
欢迎转载,但需标注出处,谢谢!背景:有客户反应有个别模块下的定时任务没有正常执行,是否是新装的模块哪些有问题?排查后发现,客户是在一台服务器上跑着一个odoo容器,对应多个数据库。个别库的定时任务是正常的,但是一个对接其他平台的库的定时任务没有正常跑起来。先说结论,看官没时间支持按说明处理即可,分析过程在下面。结论在odoo的配置文件db_name字段配置希望后台一直跑着的库名称字符串,以英文“,”分割。分析直接源码看odoo日志,我们知道odoo的任务正常执行时会打印StartingJob任务名称,直接vscode全局查找,定位到ir_cron.py文件的_process_jobs函数。@c
欢迎转载,但需标注出处,谢谢!背景:有客户反应有个别模块下的定时任务没有正常执行,是否是新装的模块哪些有问题?排查后发现,客户是在一台服务器上跑着一个odoo容器,对应多个数据库。个别库的定时任务是正常的,但是一个对接其他平台的库的定时任务没有正常跑起来。先说结论,看官没时间支持按说明处理即可,分析过程在下面。结论在odoo的配置文件db_name字段配置希望后台一直跑着的库名称字符串,以英文“,”分割。分析直接源码看odoo日志,我们知道odoo的任务正常执行时会打印StartingJob任务名称,直接vscode全局查找,定位到ir_cron.py文件的_process_jobs函数。@c
实践环境win10Python3.6.2odoo_14.0.latest.tar.gz下载地址:https://download.odoocdn.com/download/14/src?payload=MTY3MDg1MTM3Ni4xNC5zcmMud0tZRWZLX2I5UVF0Tm51UUVqT1lQVE5PbGRyYW5zWTc4dHhuOWxfclM4UT0%3D引用页面:https://www.odoo.com/zh_TW/page/downloadMicrosoftVisualC++BuildTool下载地址:https://download.microsoft.com/downl
实践环境win10Python3.6.2odoo_14.0.latest.tar.gz下载地址:https://download.odoocdn.com/download/14/src?payload=MTY3MDg1MTM3Ni4xNC5zcmMud0tZRWZLX2I5UVF0Tm51UUVqT1lQVE5PbGRyYW5zWTc4dHhuOWxfclM4UT0%3D引用页面:https://www.odoo.com/zh_TW/page/downloadMicrosoftVisualC++BuildTool下载地址:https://download.microsoft.com/downl
实践环境Odoo14.0-20221212(CommunityEdition)OdooWebLoginScreen14.0https://apps.odoo.com/apps/modules/14.0/odoo_web_login/#操作步骤1、把下载的odoowebloginscreen压缩包解压后,放自定义插件目录,如下2、登录odoo,打开Apps,使用关键词"web_login"搜索模块,安装odoo_web_login注意:在安装website模块之后安装odoo_web_login模块或者安装website模块之后更新odoo_web_login模块3、修改%PROJECT_HOM
实践环境Odoo14.0-20221212(CommunityEdition)OdooWebLoginScreen14.0https://apps.odoo.com/apps/modules/14.0/odoo_web_login/#操作步骤1、把下载的odoowebloginscreen压缩包解压后,放自定义插件目录,如下2、登录odoo,打开Apps,使用关键词"web_login"搜索模块,安装odoo_web_login注意:在安装website模块之后安装odoo_web_login模块或者安装website模块之后更新odoo_web_login模块3、修改%PROJECT_HOM
老韩头的开发日常☞【好书学习】系列背景作为丙方,完成了甲方的二开需求。因此,在设计二开模块的时候,考虑的是当时所列的需求清单,并整合到一个二开模块中。完成交付后,客户评价蛮好的。因此,成功的为乙方争取到了继续合作的机会。然后,就没我啥事了,尴尬...再之后过了一两个月,另一个丙方搞不定甲方的需求,所以我又被安排上线收拾残局。而,此处接手的残局有点坑,涉及多个开发的二开模块。由于甲方的需求是分批提出,且由多个团队完成。因此,二开模块的间存在循环依赖的情况。在已经跑起来的库上运行,没有任何问题,但是,在新库上重新安装的时候,会发现根本安装不上。因此,决定花一个月的时间彻底拆分已有的二开模块。为什么
老韩头的开发日常☞【好书学习】系列背景作为丙方,完成了甲方的二开需求。因此,在设计二开模块的时候,考虑的是当时所列的需求清单,并整合到一个二开模块中。完成交付后,客户评价蛮好的。因此,成功的为乙方争取到了继续合作的机会。然后,就没我啥事了,尴尬...再之后过了一两个月,另一个丙方搞不定甲方的需求,所以我又被安排上线收拾残局。而,此处接手的残局有点坑,涉及多个开发的二开模块。由于甲方的需求是分批提出,且由多个团队完成。因此,二开模块的间存在循环依赖的情况。在已经跑起来的库上运行,没有任何问题,但是,在新库上重新安装的时候,会发现根本安装不上。因此,决定花一个月的时间彻底拆分已有的二开模块。为什么
老韩头的开发日常☞【好书学习】系列随笔,随便写写权限的三种管理:或、与、非做过odoo二开的人都了解,在odoo中,权限是跟着权限组走的。与全局的记录规则是以“与”的关系进行计算的,需同时满足才可以。或而非全局的权限,是以“或”的规则进行累加的。因此,如果我们需要的权限大于某个官方基础模块的权限组时,我们可以通过新建一个权限组,然后给这个新的权限组赋予缺少的权限即可。这就是我们所说的“或”。但,如果我们需要的权限正好是小于某个权限组呢,难道要新建一个组,并完整拷贝已知最接近权限组A的权限后去除多余的权限吗?这并不是一个明智的决定。划重点以“完整拷贝已知最接近权限组A的权限后去除多余的权限”的方