首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Odoo 11后端空白页

Odoo 11后端空白页
EN

Stack Overflow用户
提问于 2019-01-10 21:26:28
回答 1查看 3.6K关注 0票数 5

问题

在Odoo后端,有时窗口只会显示菜单项,屏幕的其余部分保持空白。单击此菜单中的任何一个都会将url更改为

https://my_服务器_ip/web?debug#菜单_id=68&action=唯一要改变的是menu_id的值,但action的值将保持为空。

起初,它认为是在刷新我已在的页面时。但是我不能一致地重现这个bug (一旦它发生了,它每次都会重现,但如果我清除了缓存/cookie,它们可以在一小段时间内解决问题,问题就会在某个时候重现,但我找不到一种行为来在我想要的时候重现它。它只会在某些时候发生随机点)。它只是在使用一段时间后发生,有时是几个小时后,有时是两个页面加载后。有时候,一天都没问题,但是明天第一次尝试,bug又出现了。

尝试过的解决方案

以下是尝试的相关解决方案:

  1. 清除缓存和cookies。
  2. 重启服务器
  3. 删除所有条目ir_attachment其中包含web/content..。(正如在Odoo git问题上所建议的那样)。
  4. 从头开始创建一个新的VM,与被and的Odoo VM无关,在这个新的VM上安装Postgres和Odoo。然后重新安装所有已安装的模块。

上述解决方案的影响

顺序相同:

  1. 问题解决了,但过了几次又发生了。
  2. 通常不能单独工作,但有时确实有效。
  3. 我想在这样做并重新启动服务器后,它工作了,但现在不能重现bug来再次测试它。当bug再次出现时,我将尝试并编辑以确认此工作。
  4. 机器行为是相同的。一开始它起作用了,但过了一段时间,bug又开始了。

配置

  • Odoo版本:Odoo11.0-20190108(社区版)
  • 操作系统: Debian stretch
  • 安装的社区模块:

后端_主题_v11

基础_位置

基础_位置_地理名称_导入

发送_短信

网站_响应式

  • 还安装了为该任务内部开发的自定义模块。
  • Proxmox上安装的虚拟机
  • Nginx服务

odoo.conf的内容

代码语言:javascript
复制
; This is the password that allows database operations:
; admin_passwd = [admin_password]
db_host = False
db_port = False
db_user = odoo
db_password = [db_password]
addons_path = /usr/lib/python3/dist-packages/odoo/addons,/opt/odoo/modules

limit_memory_hard = 1677721600
limit_memory_soft = 629145600
limit_request = 8192
limit_time_cpu = 600
limit_time_real = 1200
max_cron_threads = 1
workers = 5

# HTTP CONFIG
proxy_mode = True

xmlrpc = True
xmlrpc_interface = 127.0.0.1
netrpc_interface = 127.0.0.1

Https部署和长轮询部署本文档之后,我进行了Https和长轮询部署。

日志

错误发生时在Odoo上生成的日志

2019-01-10 09:56:01,883 17076信息开发工具: 127.0.0.1 --10/Jan-2019 09:56:01"GET /web HTTP/1.0“200 -

2019-01-10 09:56:02,262 17076信息开发工具: 127.0.0.1 --10/Jan-2019 09:56:02"GET /web/image/ir.ui.menu/98/web_图标_数据HTTP/1.0“304 -

2019-01-10 09:56:02,294 17076信息开发工具: 127.0.0.1 --10/Jan-2019 09:56:02"GET /web/image/ir.ui.menu/103/web_图标_数据HTTP/1.0“304 -

2019-01-10 09:56:02,327 17076信息开发工具: 127.0.0.1 --10/Jan-2019 09:56:02"GET /web/image/ir.ui.menu/155/web_图标_数据HTTP/1.0“304 -

2019-01-10 09:56:02,360 17076信息开发工具: 127.0.0.1 --10/Jan-2019 09:56:02"GET /web/image/ir.ui.menu/68/web_图标_数据HTTP/1.0“304 -

2019-01-10 09:56:02,465 17076信息开发工具: 127.0.0.1 --10/Jan-2019 09:56:02"GET /web/image/ir.ui.menu/109/web_图标_数据HTTP/1.0“304 -

2019-01-10 09:56:02,523 17076信息开发工具: 127.0.0.1 --10/Jan-2019 09:56:02"GET /web/image/ir.ui.menu/133/web_图标_数据HTTP/1.0“304 -

2019-01-10 09:56:02,545 17075信息开发odoo.modules.registry:在数据库信令后使所有模型缓存无效。

2019-01-10 09:56:02,559 17075信息开发工具: 127.0.0.1 --10/Jan-2019 09:56:02"GET /web/image/ir.ui.menu/142/web_图标_数据HTTP/1.0“304 -

2019-01-10 09:56:02,595 17075信息开发工具: 127.0.0.1 --10/Jan-2019 09:56:02"GET /web/image/ir.ui.menu/140/web_图标_数据HTTP/1.0“304 -

2019-01-10 09:56:02,616 17073信息开发odoo.modules.registry:在数据库信令后使所有模型缓存无效。

2019-01-10 09:56:02,631 17073信息开发工具: 127.0.0.1 --10/Jan-2019 09:56:02"GET /web/image/ir.ui.menu/144/web_图标_数据HTTP/1.0“304 -

2019-01-10 09:56:02,653 17077信息开发odoo.modules.registry:在数据库信令后使所有模型缓存无效。

2019-01-10 09:56:02,668 17077信息开发工具: 127.0.0.1 --10/Jan-2019 09:56:02"GET /web/image/ir.ui.menu/129/web_图标_数据HTTP/1.0“200 -

2019-01-10 09:56:02,693 17074信息开发odoo.modules.registry:在数据库信令后使所有模型缓存无效。

2019-01-10 09:56:02,710 17075信息开发工具: 127.0.0.1 --10/Jan-2019 09:56:02"GET / web /webclient/qweb?mods=web,base,bus,web_旅游、邮件、销售_团队、日历、web_计划员、联系人、crm、备注、自定义_

module1,身份验证_注册,web_响应,后端_主题_v11,base_导入,基础_位置,基地_位置_地理名称_导入、iap、发送_sms、sms、web_图表,web_编辑器,web_看板_仪表盘,腹板_设置_仪表板,门户HTTP/1.0“304 -

2019-01-10 09:56:02,713 17074信息开发工具: 127.0.0.1 --10/Jan-2019 09:56:02"GET /web/image/ir.ui.menu/5/web_图标_数据HTTP/1.0“304 -

2019-01-10 09:56:02,715 17076信息开发工具: 127.0.0.1 --10/Jan-2019 09:56:02"POST /web/dataset/call_kw/res.users/读取HTTP/1.0“200 -

2019-01-10 09:56:02,747 17077信息开发工具: 127.0.0.1 --10/Jan-2019 09:56:02"GET /web/image/ir.ui.menu/4/web_图标_数据HTTP/1.0“200 -

2019-01-10 09:56:02,762 17073信息开发工具: 127.0.0.1 --10/Jan-2019 09:56:02"POST /web/dataset/call HTTP/1.0“200 -

2019-01-10 09:56:02,767 17077信息开发工具: 127.0.0.1 --10/Jan-2019 09:56:02"GET /dashboard HTTP/1.0“200 -

2019-01-10 09:56:03,059 17077信息开发工具: 127.0.0.1 --10/Jan-2019 09:56:03"POST /web/webclient/translations HTTP/1.0“200 -

2019-01-10 09:56:03,115 17077信息开发工具: 127.0.0.1 --10/Jan-2019 09:56:03"GET /web/webclient/locale/fr_

FR HTTP/1.0“200 -

2019-01-10 09:56:03,218 17077信息开发工具: 127.0.0.1 --10/Jan-2019 09:56:03"POST /mail/client_操作HTTP/1.0“200 -

2019-01-10 09:56:03,253 17076信息开发工具: 127.0.0.1 --10/Jan-2019 09:56:03"POST /web/dataset/call_

kw/res.users/读取HTTP/1.0“200 -

2019-01-10 09:56:03,265 17078信息开发odoo.modules.registry:在数据库信令后使所有模型缓存无效。

2019-01-10 09:56:03,279 17076信息开发工具: 127.0.0.1 --10/Jan-2019 09:56:03"POST /日历/通知HTTP/1.0“200 -

2019-01-10 09:56:03,302 17073信息开发工具: 127.0.0.1 --10/Jan-2019 09:56:03"GET /web/image?model=res.users&field=image_small&id=1超文本传输协议/1.0“304 -

2019-01-10 09:56:03,316 17077信息开发工具: 127.0.0.1 --10/Jan-2019 09:56:03"POST /web/action/load HTTP/1.0“200 -

2019-01-10 09:56:03,391 17075信息开发工具: 127.0.0.1 --10/Jan-2019 09:56:03"POST /web/dataset/call_kw/web.planner/搜索_阅读HTTP/1.0“200 -

2019-01-10 09:56:03,409 17074信息开发工具: 127.0.0.1 --10/Jan-2019 09:56:03"POST /web/dataset/call_kw/res.users/活动_用户_计数HTTP/1.0“200 -

2019-01-10 09:56:03,439 17076信息开发工具: 127.0.0.1 --10/Jan-2019 09:56:03"POST /web/dataset/call_

kw/mail.message/load_视图HTTP/1.0“200 -

2019-01-10 09:56:03,519 17074信息开发工具: 127.0.0.1 --10/Jan-2019 09:56:03"POST /web/dataset/call_kw/ir.filter/get_过滤器HTTP/1.0“200 -

2019-01-10 09:56:03,575 17074信息开发工具: 127.0.0.1 --10/Jan-2019 09:56:03"POST /web/dataset/call_

kw/mail.message/message_获取HTTP/1.0“200 -

*我们不知道nginx服务产生的日志是否与该bug有关

2019/01/10 11:52:37错误165#165:*10008从上游读取响应头时,上游过早关闭连接,客户端: 82.127.91.106,服务器:服务器_url,请求:"POST /longpolling/poll HTTP/1.1",上游:“http://127.0.0.1:8072/longpolling/poll,主机:服务器_url,推荐人:https://[server_url]/web?debug“

备注:

  • 这一行只包含我的四个自定义模块中的一个,我不知道它是否正常。10/Jan-2019 09:56:02"GET / web /webclient/qweb?mods=web,base,bus,web_旅游、邮件、销售_团队、日历、web_计划员、联系人、crm、备注、自定义_module1,身份验证_注册,web_响应,后端_主题_v11,base_导入,基础_位置,基地_位置_地理名称_导入、iap、发送_sms、sms、web_图表,web_编辑器,web_看板_仪表盘,腹板_设置_仪表板,门户HTTP/1.0“304 -
  • 还要注意304错误。对于安装在Debian环境中的Odoo,我找不到任何解释。

相关的其他错误

除了这个问题之外,这两个问题也可能发生在同一台服务器上

  • 未加载菜单项图片(比空白页更常见)
  • 登录页面上的重定向不是自动的,“您应该在几秒钟内被重定向,如果没有单击此处.../web/ login”。以前是系统化的,但现在似乎不再发生了。

解决方案不适用于此情况

如果你在研究后发现了这个问题,这可能会对你有所帮助,但不适用于这个问题的规格

在windows安装中,有一个模块可以解决这个问题:网站_修复_空白_页面..。

在写这个问题的时候,这个问题只存在于V10,并且只修复了Odoo的操作系统相关问题,导致了空白页面错误。

最后一个词

由于4次尝试的解决方案都不起作用,并且我尝试了两个版本的夜间构建的odoo,3个月后,我希望问题来自于我的自定义模块。但这是成千上万的LOC。

是什么导致了这种情况,我怎样才能在所有这些文件中找到原因。

可能是别的原因?那会是什么呢?

我不能一个接一个地卸载我的模块,试图找出错误在哪个模块中,至少不是所有模块。出于两个原因:

  • 一些模块依赖于其他模块,所以我不能只试用子模块而不使用父模块。
  • 这个bug是不能随意重现的,它只会在某个时刻发生,我不能确定这个bug是不是在我确信卸载的模块中。

编辑:新信息

似乎只有在向自定义控制器(和/web/session/authenticate)发出请求时,错误才会发生。

  • 如果在请求之后,我尝试在导航器中刷新页面,则会出现上述错误。并且通过清除高速缓存来修复该错误。清除缓存后,刷新仍会产生错误。一旦我重新启动服务器并清除缓存,就不会出现任何问题。
  • 如果我发出请求,重新启动服务器,然后刷新,没有错误,不清除缓存。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-11 08:20:38

我找到了导致这一切的原因。5个月了,仍然没有答案,所以我会在这里发布我的答案。

如果您的控制器中有自定义路由,此答案可能会对您有所帮助。

首先,解决方案

永远不要以直接的方式重新定义Response对象的任何属性。这意味着像这样的行Response.status = '400 Invalid credentials'将导致每次调用您拥有它的路由时都会发生此错误。

更深入地了解这个bug:

当你这样做的时候Response.status = '400 Bad request'您重新获得了对响应对象的控制,并中断了odoo的正常工作流程。因此,它不再能够正确使用它,并且任何odoo路由返回的每个响应都将具有最后定义的状态,直到您重新启动服务器(在本例中,400,因此每个请求都被视为BadRequest,导致空白页面并转移其他bug,但200也会做同样的事情,因为302是重定向所必需的)。

如果有人知道为什么Odoo没有重新获得对Response对象的控制,请随意编辑这个答案(请一定要这样做,这让我困扰了很长时间)。

那么如何修改响应状态呢?

快速浏览一下核心模块就能给出答案

自定义HTTP方法的情况(如POST):

raise werkzeug.exception.BadRequest("400 Invalid credentials")

请注意,默认情况下,您不能引发除400以外的任何其他错误。如果你想这样做,你必须修改odoo根目录中的http.py文件。但是请注意,这可能意味着您不理解HTTP协议,就像我做的那样。事实上,大多数时候你应该返回200,没有HTTP错误,所以请求是成功的。但是,您应该添加一个error属性设置为json,如果行为不是客户端所期望的(比如在connexion中输入了错误的密码)。

标准方法案例AFAIK(如GET):

代码语言:javascript
复制
response = werkzeug.wrappers.Response(json.dumps({[your json dictionary]}), status="400 Invalid credentials")
return response
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54129734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档