近期erp系统需要跟用友的数据库进行对接,其中用到了触发器,当用友系统新增数据时推送到我的消息队列。同理,当erp有这些订单也推送给用友。
在使用消息队列的过程中出现了一些问题,我在erp主进程开始时启用一个线程。由于处理数据的方法写在控制器controllers里面,而且threading的游标,跟odoo环境下的游标是不同的,所以并不能够使用。
那么我想了一个方法,将另外一个方法放入进程中,将处理数据的方法写为接口里面,然后利用这个方法去请求这个接口,以此来开启消息队列。
但是由于这个方法是在odoo系统外的,那么我需要登录odoo系统,才能够请求它的接口。这时我们可以用odoorpc:
import odoorpc
odoo = odoorpc.ODOO('127.0.0.1', port=8888)
odoo.login('db_name', 'user', 'passwd')
简单的两句代码,就登录了odoo系统,不需要再利用session_id去每次发送post请求。
然后便可以通过odoo.http(url, data, heardes)来进行请求,类似于requests的post
此外,还可以使用他来访问数据,进行常规数据库操作。详情请参照: