Skip to content
  • Categories
  • Tags
  • Popular
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (Flatly)
  • No Skin
Collapse

Odoo 中文社区

  1. Home
  2. Categories
  3. Odoo 培训
  4. Odoo的异步队列神器-queue_job

Odoo的异步队列神器-queue_job

Scheduled Pinned Locked Moved Odoo 培训
odoo技术异步队列queuejob
19 Posts 4 Posters 14.8k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D Offline
    D Offline
    digitalsatori
    管理员
    wrote on last edited by
    #6

    确保你的Odoo工作在workers > 1的状态

    【上海先安科技】(tony AT openerp.cn)

    H 1 Reply Last reply
    0
    • D digitalsatori

      确保你的Odoo工作在workers > 1的状态

      H Offline
      H Offline
      hui
      wrote on last edited by
      #7

      @digitalsatori 我的workers是2

      1 Reply Last reply
      0
      • D Offline
        D Offline
        digitalsatori
        管理员
        wrote on last edited by
        #8

        你可以选择这个job,在action中选'requeue', 重新加入队列。

        【上海先安科技】(tony AT openerp.cn)

        H 1 Reply Last reply
        0
        • D digitalsatori

          你可以选择这个job,在action中选'requeue', 重新加入队列。

          H Offline
          H Offline
          hui
          wrote on last edited by hui
          #9

          @digitalsatori 估计跟如下报错有关,但是我根据报错位置打印出来dispatch 是None.

          源码中这个值应该是这么来的odoo.multi_process or odoo.evented.

          这个是跟设置还是什么有关还是其他,指点下?

          2020-03-11 09:41:10,840 27721 DEBUG aa_v11 odoo.modules.registry: Multiprocess signaling check: [Registry - 13 -> 13] [Cache - 33 -> 33]
          2020-03-11 09:41:10,842 27721 ERROR aa_v11 odoo.http: Exception during JSON request handling.
          Traceback (most recent call last):
            File "/home/hui/odoo-dev/odoo11/odoo11/odoo/http.py", line 653, in _handle_exception
              return super(JsonRequest, self)._handle_exception(exception)
            File "/home/hui/odoo-dev/odoo11/odoo11/odoo/http.py", line 312, in _handle_exception
              raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
            File "/home/hui/odoo-dev/odoo11/odoo11/odoo/tools/pycompat.py", line 87, in reraise
              raise value
            File "/home/hui/odoo-dev/odoo11/odoo11/odoo/http.py", line 695, in dispatch
              result = self._call_function(**self.params)
            File "/home/hui/odoo-dev/odoo11/odoo11/odoo/http.py", line 344, in _call_function
              return checked_call(self.db, *args, **kwargs)
            File "/home/hui/odoo-dev/odoo11/odoo11/odoo/service/model.py", line 97, in wrapper
              return f(dbname, *args, **kwargs)
            File "/home/hui/odoo-dev/odoo11/odoo11/odoo/http.py", line 337, in checked_call
              result = self.endpoint(*a, **kw)
            File "/home/hui/odoo-dev/odoo11/odoo11/odoo/http.py", line 939, in __call__
              return self.method(*args, **kw)
            File "/home/hui/odoo-dev/odoo11/odoo11/odoo/http.py", line 517, in response_wrap
              response = f(*args, **kw)
            File "/home/hui/odoo-dev/odoo11/odoo11/addons/bus/controllers/main.py", line 40, in poll
              raise Exception("bus.Bus unavailable")
          Exception: bus.Bus unavailable
          
          1 Reply Last reply
          0
          • D Offline
            D Offline
            digitalsatori
            管理员
            wrote on last edited by
            #10

            你贴出来的exception跟queue.job没关系,多进程模式,不用反向代理转发长连接请求都有这个错误,没有影响的。

            你要检查Odoo服务器启动时,正常的话会显示job.queue worker启动的log信息

            【上海先安科技】(tony AT openerp.cn)

            1 Reply Last reply
            0
            • H Offline
              H Offline
              hui
              wrote on last edited by
              #11

              @digitalsatori 从log看,有WorkCorn的日志,但是报错一直是这个错误在循环,走不下去.

              2020-03-12 02:18:43,989 6106 INFO aa_v11 werkzeug: 127.0.0.1 - - [12/Mar/2020 02:18:43] "POST /longpolling/poll HTTP/1.1" 200 -
              2020-03-12 02:18:50,691 6111 DEBUG ? odoo.service.server: WorkerCron (6111) polling for jobs
              2020-03-12 02:18:50,708 6111 INFO ? odoo.sql_db: ConnectionPool(used=0/count=0/max=64): Closed 1 connections to 'sslmode=prefer user=hui dbname=aa_v11'
              2020-03-12 02:18:50,708 6111 DEBUG ? odoo.service.server: WorkerCron (6111) aa_v11 time:0.005s mem: 330508.0k -> 330508.0k (diff: 0.0k)
              2020-03-12 02:18:50,709 6111 DEBUG ? odoo.service.server: WorkerCron (6111) polling for jobs
              2020-03-12 02:18:50,720 6111 INFO ? odoo.sql_db: ConnectionPool(used=0/count=0/max=64): Closed 1 connections to 'sslmode=prefer user=hui dbname=mm_v11'
              2020-03-12 02:18:50,721 6111 DEBUG ? odoo.service.server: WorkerCron (6111) mm_v11 time:0.007s mem: 330508.0k -> 330508.0k (diff: 0.0k)
              2020-03-12 02:18:50,721 6111 DEBUG ? odoo.service.server: WorkerCron (6111) polling for jobs
              2020-03-12 02:18:50,733 6111 WARNING ? odoo.addons.base.ir.ir_cron: Skipping database test10_v10 as its base version is not 11.0.1.3.
              2020-03-12 02:18:50,734 6111 INFO ? odoo.sql_db: ConnectionPool(used=0/count=0/max=64): Closed 1 connections to 'sslmode=prefer user=hui dbname=test10_v10'
              2020-03-12 02:18:50,734 6111 DEBUG ? odoo.service.server: WorkerCron (6111) test10_v10 time:0.007s mem: 330508.0k -> 330508.0k (diff: 0.0k)
              2020-03-12 02:18:50,735 6111 DEBUG ? odoo.service.server: WorkerCron (6111) polling for jobs
              2020-03-12 02:18:50,748 6111 WARNING ? odoo.addons.base.ir.ir_cron: Skipping database 2e_v8 as its base version is not 11.0.1.3.
              2020-03-12 02:18:50,748 6111 INFO ? odoo.sql_db: ConnectionPool(used=0/count=0/max=64): Closed 1 connections to 'sslmode=prefer user=hui dbname=2e_v8'
              2020-03-12 02:18:50,749 6111 DEBUG ? odoo.service.server: WorkerCron (6111) 2e_v8 time:0.007s mem: 330508.0k -> 330508.0k (diff: 0.0k)
              2020-03-12 02:18:56,759 6113 DEBUG ? odoo.service.server: WorkerCron (6113) polling for jobs
              2020-03-12 02:18:56,774 6113 INFO ? odoo.sql_db: ConnectionPool(used=0/count=0/max=64): Closed 1 connections to 'sslmode=prefer user=hui dbname=aa_v11'
              2020-03-12 02:18:56,775 6113 DEBUG ? odoo.service.server: WorkerCron (6113) aa_v11 time:0.007s mem: 330508.0k -> 330508.0k (diff: 0.0k)
              2020-03-12 02:18:56,775 6113 DEBUG ? odoo.service.server: WorkerCron (6113) polling for jobs
              2020-03-12 02:18:56,788 6113 INFO ? odoo.sql_db: ConnectionPool(used=0/count=0/max=64): Closed 1 connections to 'sslmode=prefer user=hui dbname=mm_v11'
              2020-03-12 02:18:56,788 6113 DEBUG ? odoo.service.server: WorkerCron (6113) mm_v11 time:0.008s mem: 330508.0k -> 330508.0k (diff: 0.0k)
              2020-03-12 02:18:56,789 6113 DEBUG ? odoo.service.server: WorkerCron (6113) polling for jobs
              2020-03-12 02:18:56,799 6113 WARNING ? odoo.addons.base.ir.ir_cron: Skipping database test10_v10 as its base version is not 11.0.1.3.
              2020-03-12 02:18:56,799 6113 INFO ? odoo.sql_db: ConnectionPool(used=0/count=0/max=64): Closed 1 connections to 'sslmode=prefer user=hui dbname=test10_v10'
              2020-03-12 02:18:56,799 6113 DEBUG ? odoo.service.server: WorkerCron (6113) test10_v10 time:0.005s mem: 330508.0k -> 330508.0k (diff: 0.0k)
              2020-03-12 02:18:56,800 6113 DEBUG ? odoo.service.server: WorkerCron (6113) polling for jobs
              2020-03-12 02:18:56,810 6113 WARNING ? odoo.addons.base.ir.ir_cron: Skipping database 2e_v8 as its base version is not 11.0.1.3.
              2020-03-12 02:18:56,810 6113 INFO ? odoo.sql_db: ConnectionPool(used=0/count=0/max=64): Closed 1 connections to 'sslmode=prefer user=hui dbname=2e_v8'
              2020-03-12 02:18:56,811 6113 DEBUG ? odoo.service.server: WorkerCron (6113) 2e_v8 time:0.006s mem: 330508.0k -> 330508.0k (diff: 0.0k)
              2020-03-12 02:18:58,000 6107 DEBUG aa_v11 odoo.modules.registry: Multiprocess signaling check: [Registry - 14 -> 14] [Cache - 44 -> 44]
              2020-03-12 02:18:58,003 6107 ERROR aa_v11 odoo.http: Exception during JSON request handling.
              Traceback (most recent call last):
                File "/home/hui/odoo-dev/odoo11/odoo11/odoo/http.py", line 653, in _handle_exception
                  return super(JsonRequest, self)._handle_exception(exception)
                File "/home/hui/odoo-dev/odoo11/odoo11/odoo/http.py", line 312, in _handle_exception
                  raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
                File "/home/hui/odoo-dev/odoo11/odoo11/odoo/tools/pycompat.py", line 87, in reraise
                  raise value
                File "/home/hui/odoo-dev/odoo11/odoo11/odoo/http.py", line 695, in dispatch
                  result = self._call_function(**self.params)
                File "/home/hui/odoo-dev/odoo11/odoo11/odoo/http.py", line 344, in _call_function
                  return checked_call(self.db, *args, **kwargs)
                File "/home/hui/odoo-dev/odoo11/odoo11/odoo/service/model.py", line 97, in wrapper
                  return f(dbname, *args, **kwargs)
                File "/home/hui/odoo-dev/odoo11/odoo11/odoo/http.py", line 337, in checked_call
                  result = self.endpoint(*a, **kw)
                File "/home/hui/odoo-dev/odoo11/odoo11/odoo/http.py", line 939, in __call__
                  return self.method(*args, **kw)
                File "/home/hui/odoo-dev/odoo11/odoo11/odoo/http.py", line 517, in response_wrap
                  response = f(*args, **kw)
                File "/home/hui/odoo-dev/odoo11/odoo11/addons/bus/controllers/main.py", line 37, in poll
                  raise Exception("bus.Bus unavailable")
              Exception: bus.Bus unavailable
              2020-03-12 02:18:58,006 6107 INFO aa_v11 werkzeug: 127.0.0.1 - - [12/Mar/2020 02:18:58] "POST /longpolling/poll HTTP/1.1" 200 -
              2020-03-12 02:18:59,679 6106 INFO ? werkzeug: 127.0.0.1 - - [12/Mar/2020 02:18:59] "GET /web/static/src/xml/dialog.xml?debug=1583979539675 HTTP/1.1" 200 -
              2020-03-12 02:19:21,842 6106 DEBUG aa_v11 odoo.modules.registry: Multiprocess signaling check: [Registry - 14 -> 14] [Cache - 44 -> 44]
              2020-03-12 02:19:21,844 6106 ERROR aa_v11 odoo.http: Exception during JSON request handling.
              Traceback (most recent call last):
                File "/home/hui/odoo-dev/odoo11/odoo11/odoo/http.py", line 653, in _handle_exception
                  return super(JsonRequest, self)._handle_exception(exception)
                File "/home/hui/odoo-dev/odoo11/odoo11/odoo/http.py", line 312, in _handle_exception
                  raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
                File "/home/hui/odoo-dev/odoo11/odoo11/odoo/tools/pycompat.py", line 87, in reraise
                  raise value
                File "/home/hui/odoo-dev/odoo11/odoo11/odoo/http.py", line 695, in dispatch
                  result = self._call_function(**self.params)
                File "/home/hui/odoo-dev/odoo11/odoo11/odoo/http.py", line 344, in _call_function
                  return checked_call(self.db, *args, **kwargs)
                File "/home/hui/odoo-dev/odoo11/odoo11/odoo/service/model.py", line 97, in wrapper
                  return f(dbname, *args, **kwargs)
                File "/home/hui/odoo-dev/odoo11/odoo11/odoo/http.py", line 337, in checked_call
                  result = self.endpoint(*a, **kw)
                File "/home/hui/odoo-dev/odoo11/odoo11/odoo/http.py", line 939, in __call__
                  return self.method(*args, **kw)
                File "/home/hui/odoo-dev/odoo11/odoo11/odoo/http.py", line 517, in response_wrap
                  response = f(*args, **kw)
                File "/home/hui/odoo-dev/odoo11/odoo11/addons/bus/controllers/main.py", line 37, in poll
                  raise Exception("bus.Bus unavailable")
              Exception: bus.Bus unavailable
              
              1 Reply Last reply
              0
              • D Offline
                D Offline
                digitalsatori
                管理员
                wrote on last edited by
                #12

                你是不是没有按照queue.job模块的安装说明配置odoo的配置文件啊:

                [options]
                (...)
                workers = 2
                server_wide_modules = web,queue_job
                
                (...)
                [queue_job]
                channels = root:2
                

                【上海先安科技】(tony AT openerp.cn)

                H 2 Replies Last reply
                0
                • D Offline
                  D Offline
                  digitalsatori
                  管理员
                  wrote on last edited by digitalsatori
                  #13

                  另外,你碰到的那个错误,我有写过一个帖子的:https://shine-it.net/topic/5701/odoo-错误-exception-bus-bus-unavailable-是什么鬼

                  【上海先安科技】(tony AT openerp.cn)

                  1 Reply Last reply
                  0
                  • D digitalsatori

                    你是不是没有按照queue.job模块的安装说明配置odoo的配置文件啊:

                    [options]
                    (...)
                    workers = 2
                    server_wide_modules = web,queue_job
                    
                    (...)
                    [queue_job]
                    channels = root:2
                    
                    H Offline
                    H Offline
                    hui
                    wrote on last edited by hui
                    #14

                    @digitalsatori
                    非常感谢,现在通过官方的系统导入使用异步队列可以啦.

                    我还有几个问题想再确认下:
                    1.worker设置多少合适
                    2.测试的时候发现,我用6500条数据(只有两个导入字段)测试,worker=2,系统导入的时候选择了后台导入,还使用了30min左右.速度没有提高多少
                    3.在odoo启动后创建的job在不做任何操作的情况下,不会执行job,即使重写requeue也没效果,必须关闭重启odoo服务才会很快执行job.(官方文档有,如果创建一个新数据库或在已有数据库上安装了queue_job,必须重启才会生效.)
                    3.如果自定义导入方法的话,就需要自己分割文件,生成不同的job了吧
                    4.多个channel和runner是怎么设置的,哪里设置的,什么作用

                    H 1 Reply Last reply
                    0
                    • D digitalsatori

                      你是不是没有按照queue.job模块的安装说明配置odoo的配置文件啊:

                      [options]
                      (...)
                      workers = 2
                      server_wide_modules = web,queue_job
                      
                      (...)
                      [queue_job]
                      channels = root:2
                      
                      H Offline
                      H Offline
                      hui
                      wrote on last edited by
                      #15

                      @digitalsatori
                      实验系统自带导入的时候启用异步导入,成功导入.但是速度没有快多少,什么原因?

                      配置文件修改了如下的:

                      workers = 4
                      server_wide_modules = web,queue_job
                      channels = root:1
                      

                      日志可以看到queue.job启动了,

                      2020-03-19 02:16:26,417 6384 INFO ? odoo.addons.queue_job.jobrunner.runner: starting
                      2020-03-19 02:16:26,418 6384 INFO ? odoo.addons.queue_job.jobrunner.runner: initializing database connections
                      2020-03-19 02:16:26,513 6384 DEBUG ? odoo.addons.queue_job.jobrunner.runner: queue_job is not installed for db ccp_v11
                      2020-03-19 02:16:26,542 6384 DEBUG ? odoo.addons.queue_job.jobrunner.runner: queue_job is not installed for db ll_v12
                      2020-03-19 02:16:26,653 6384 INFO ? odoo.addons.queue_job.jobrunner.runner: queue job runner ready for db queue2_v11
                      2020-03-19 02:16:26,728 6384 INFO ? odoo.addons.queue_job.jobrunner.runner: queue job runner ready for db queue_v11
                      2020-03-19 02:16:26,790 6384 INFO ? odoo.addons.queue_job.jobrunner.runner: queue job runner ready for db test_v11
                      2020-03-19 02:16:26,790 6384 INFO ? odoo.addons.queue_job.jobrunner.runner: database connections ready
                      2020-03-19 02:16:26,790 6384 DEBUG ? odoo.addons.queue_job.jobrunner.runner: select() timeout: 60.00 sec
                      
                      1 Reply Last reply
                      0
                      • D Offline
                        D Offline
                        digitalsatori
                        管理员
                        wrote on last edited by
                        #16

                        异步本身并不提高速度。要提高速度要考虑并发,并发是要将导入数据分割然后同时导入。但是并发的时候有时候要考虑并发锁。这个你要自己琢磨。

                        【上海先安科技】(tony AT openerp.cn)

                        H 1 Reply Last reply
                        0
                        • D digitalsatori

                          异步本身并不提高速度。要提高速度要考虑并发,并发是要将导入数据分割然后同时导入。但是并发的时候有时候要考虑并发锁。这个你要自己琢磨。

                          H Offline
                          H Offline
                          hui
                          wrote on last edited by
                          #17

                          @digitalsatori
                          嗯嗯,好的,谢谢,非常感谢.

                          1 Reply Last reply
                          0
                          • G Offline
                            G Offline
                            grey
                            wrote on last edited by
                            #18

                            不是很懂这个异步任务的优势在哪?odoo作为B/S架构,导入等待时直接再开一个新页面不就好了吗?

                            1 Reply Last reply
                            0
                            • H hui

                              @digitalsatori
                              非常感谢,现在通过官方的系统导入使用异步队列可以啦.

                              我还有几个问题想再确认下:
                              1.worker设置多少合适
                              2.测试的时候发现,我用6500条数据(只有两个导入字段)测试,worker=2,系统导入的时候选择了后台导入,还使用了30min左右.速度没有提高多少
                              3.在odoo启动后创建的job在不做任何操作的情况下,不会执行job,即使重写requeue也没效果,必须关闭重启odoo服务才会很快执行job.(官方文档有,如果创建一个新数据库或在已有数据库上安装了queue_job,必须重启才会生效.)
                              3.如果自定义导入方法的话,就需要自己分割文件,生成不同的job了吧
                              4.多个channel和runner是怎么设置的,哪里设置的,什么作用

                              H Offline
                              H Offline
                              HelloWorld
                              wrote on last edited by
                              #19

                              @hui 请问,新建库重启问题如何处理的?有解决方案吗?

                              1 Reply Last reply
                              0

                              Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                              Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                              With your input, this post could be even better 💗

                              Register Login
                              Reply
                              • Reply as topic
                              Log in to reply
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes


                              • Login

                              • Don't have an account? Register

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • Categories
                              • Tags
                              • Popular
                              • Users
                              • Groups