【问题标题】:Odoo server too slow to shutdownOdoo 服务器太慢而无法关闭
【发布时间】:2017-06-01 02:30:39
【问题描述】:

我在笔记本电脑(i5、8Gb RAM、SSD、Win 10)上运行带有 Python 2.7 的 Odoo 8 每次我需要关闭服务器来更新我的代码(使用 ctrl + C 两次),它需要将近 2 分钟才能关闭。

有什么办法可以让关机更快??

关机时的终端输出

2017-01-17 09:58:54,161 7256 INFO ? openerp.service.server: Initiating shutdown

2017-01-17 09:58:54,167 7256 INFO ? openerp.service.server: Hit CTRL-C again or send a second signal to force the shutdown.

Traceback (most recent call last):
  File "odoo.py", line 160, in <module>
    main()

  File "odoo.py", line 157, in main
    openerp.cli.main()

  File "C:\odoo-8.0\openerp\cli\__init__.py", line 68, in main
    o.run(args)

  File "C:\odoo-8.0\openerp\cli\server.py", line 180, in run
    main(args)

  File "C:\odoo-8.0\openerp\cli\server.py", line 174, in main
    rc = openerp.service.server.start(preload=preload, stop=stop)

  File "C:\odoo-8.0\openerp\service\server.py", line 970, in start
    rc = server.run(preload, stop)

  File "C:\odoo-8.0\openerp\service\server.py", line 374, in run
    self.stop()

  File "C:\odoo-8.0\openerp\service\server.py", line 330, in stop
    self.httpd.shutdown()

  File "C:\Python27\lib\SocketServer.py", line 246, in shutdown
    self.__is_shut_down.wait()

  File "C:\Python27\lib\threading.py", line 614, in wait
    self.__cond.wait(timeout)

  File "C:\Python27\lib\threading.py", line 340, in wait
    waiter.acquire()

KeyboardInterrupt

【问题讨论】:

    标签: python windows python-2.7 server odoo-8


    【解决方案1】:

    服务器等待关闭是为了确保保存所有记录等,作为干净关闭的一部分。您可以考虑两种策略来减轻痛苦:

    1. 重新构建您的软件,以便仅在服务器软件发生更改时才需要关闭服务器 - 即从一个经过良好测试的小型服务器运行服务器,并从您的其余代码处理并连接到该进程- 如果服务器接口不需要更新,因此经过良好测试,则无需关闭该部分代码,因此您只需断开连接而不是关闭。

    2. 编写一个经过良好测试的小型加载和执行顶级程序,并提供一种机制告诉它重新加载更改的代码,也称为动态插件架构。这要复杂得多,因为已经运行的代码可能会留下人工制品等。

    【讨论】:

    • 感谢史蒂夫的快速回复。但我对编程非常陌生,特别是在 Odoo-Python 上。我不确定我是否理解您提供的解决方案。我更多的是寻找可以修改以缩短关机时间的设置。谢谢和问候
    • 如果在开发系统上可能,您不关心数据库的干净关闭,您可以尝试使用 python psutil.kill 杀死所有数据库组件,您将不得不工作找出如何识别它们。如果您这样做,最好有一份数据库文件的副本,用于在启动之前覆盖工作文件。
    【解决方案2】:

    Odoo 会发生这种情况,在某些情况下关闭服务器可能需要几秒钟,最多 2 -3 分钟。

    这很烦人,尤其是当您需要进行小改动时。

    快速解决方案

    只需打开 2 个(或更多,但不需要)终端窗口。

    因此,当您杀死第一个窗口时,您可以使用另一个终端来运行服务器的新实例。

    这样做,避免任何等待,无需重写/重新结构或任何东西。

    【讨论】:

      猜你喜欢
      • 2015-11-12
      • 2018-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-25
      • 1970-01-01
      • 1970-01-01
      • 2019-04-03
      相关资源
      最近更新 更多