有时,在Odoo后端中,窗口将仅显示菜单项,其余屏幕保持空白。
点击任意菜单都会将网址更改为https://my_server_ip/web?debug#menu_id=68&action=
唯一会改变的是menu_id
的值,但是action
的值将保持为空。
起初,它以为是刷新我已经在浏览的页面。但是我无法始终如一地重现该错误(一旦发生,每次都会重现该错误,但是如果我清除缓存/ Cookie可以在短时间内解决问题,该问题将在某个时候重现,但是我找不到可以在需要时复制它的行为。它只会在随机点发生)。它只是在一段时间(有时是一个小时的使用时间)之后,有时在两个页面加载之后发生的。有时候,一天没问题,但是明天尝试的时候,错误会再次发生。
以下是尝试过的相关解决方案:
ir_attachment
的{{1}}的所有条目。 (如有关Odoo git问题的建议)。以相同的顺序:
odoo.conf的内容
web/content
Https部署和longpolling部署
This documentation被用来进行Https和longpolling部署
错误发生时在Odoo上生成的日志
2019-01-10 09:56:01,883 17076 INFO开发werkzeug:127.0.0.1--[2019年1月10日09:56:01]“ GET / web HTTP / 1.0” 200-
2019 -01-10 09:56:02,262 17076 INFO开发werkzeug:127.0.0.1--[2019年1月10日09:56:02]“ GET /web/image/ir.ui.menu/98/web_icon_data HTTP / 1.0 “ 304-
2019-01-10 09:56:02,294 17076 INFO开发Werkzeug:127.0.0.1--[2019年1月10日09:56:02]“ GET /web/image/ir.ui.menu/103/web_icon_data HTTP / 1.0英寸304-
2019-01-10 09:56:02,327 17076 INFO开发Werkzeug:127.0.0.1--[2019年1月10日09:56:02]“ GET /web/image/ir.ui.menu/155/web_icon_data HTTP / 1.0英寸304-
2019-01-10 09:56:02,360 17076 INFO开发werkzeug:127.0.0.1--[2019年1月10日09:56:02]“ GET /web/image/ir.ui.menu/68/web_icon_data HTTP / 1.0英寸304-
2019-01-10 09:56:02,465 17076 INFO开发werkzeug:127.0.0.1--[2019年1月10日09:56:02]“ GET /web/image/ir.ui.menu/109/web_icon_data HTTP / 1.0英寸304-
2019-01-10 09:56:02,523 17076 INFO开发werkzeug:127.0.0.1--[2019年1月10日09:56:02]“ GET /web/image/ir.ui.menu/133/web_icon_data HTTP / 1.0英寸304-
2019-01-10 09:56:02,545 17075信息Developpement odoo.modules.registry:数据库发出信号后使所有模型缓存无效。
2019-01-10 09:56:02,559 17075 INFO开发werkzeug:127.0.0.1--[2019年1月10日09:56:02]“ GET /web/image/ir.ui.menu/142/web_icon_data HTTP / 1.0英寸304-
2019-01-10 09:56:02,595 17075 INFO开发Werkzeug:127.0.0.1--[2019年1月10日09:56:02]“ GET /web/image/ir.ui.menu/140/web_icon_data HTTP / 1.0英寸304-
2019-01-10 09:56:02,616 17073信息开发odoo.modules.registry:在数据库发出信号后使所有模型缓存无效。
2019-01-10 09:56:02,631 17073 INFO开发Werkzeug:127.0.0.1--[2019年1月10日09:56:02]“ GET /web/image/ir.ui.menu/144/web_icon_data HTTP / 1.0英寸304-
2019-01-10 09:56:02,653 17077信息开发odoo.modules.registry:在数据库发出信号后使所有模型缓存无效。
2019-01-10 09:56:02,668 17077 INFO开发Werkzeug:127.0.0.1--[2019年1月10日09:56:02]“ GET /web/image/ir.ui.menu/129/web_icon_data HTTP / 1.0“ 200-
2019-01-10 09:56:02,693 17074信息Developpement odoo.modules.registry:数据库发出信号后使所有模型缓存无效。
2019-01-10 09:56:02,710 17075 INFO开发Werkzeug:127.0.0.1--[2019年1月10日09:56:02]“ GET / web / webclient / qweb?mods = web,base,bus,web_tour ,邮件,销售团队,日历,web_planner,联系人,crm,注释,custom_module1,auth_signup,web_response,backend_theme_v11,base_import,base_location,base_location_geonames_import,IAP,send_sms,sms,web_diagram,web_editor,web_kanbans_gauge,
2019-01-10 09:56:02,713 17074 INFO开发Werkzeug:127.0.0.1--[2019年1月10日09:56:02]“ GET /web/image/ir.ui.menu/5/web_icon_data HTTP / 1.0英寸304-
2019-01-10 09:56:02,715 17076 INFO开发Werkzeug:127.0.0.1--[2019年1月10日09:56:02]“ POST /web/dataset/call_kw/res.users/read HTTP / 1.0” 200-
2019-01-10 09:56:02,747 17077 INFO开发Werkzeug:127.0.0.1--[2019年1月10日09:56:02]“ GET /web/image/ir.ui.menu/4/web_icon_data HTTP / 1.0“ 200-
2019-01-10 09:56:02,762 17073 INFO开发werkzeug:127.0.0.1--[2019年1月10日09:56:02]“ POST / web / dataset / call HTTP / 1.0” 200-
2019-01-10 09:56:02,767 17077 INFO开发Werkzeug:127.0.0.1--[10 / Jan / 2019 09:56:02]“ GET / dashboard HTTP / 1.0” 200-
2019-01-10 09:56:03,059 17077 INFO开发Werkzeug:127.0.0.1--[2019年1月10日09:56:03]“ POST / web / webclient / translations HTTP / 1.0” 200-
2019-01-10 09:56:03,115 17077 INFO开发Werkzeug:127.0.0.1--[2019年1月10日09:56:03]“ GET / web / webclient / locale / fr_FR HTTP / 1.0” 200-
2019-01-10 09:56:03,218 17077 INFO开发Werkzeug:127.0.0.1--[2019年1月10日09:56:03]“ POST / mail / client_action HTTP / 1.0” 200-
2019-01-10 09:56:03,253 17076 INFO开发werkzeug:127.0.0.1--[2019年1月10日09:56:03]“ POST /web/dataset/call_kw/res.users/read HTTP / 1.0” 200-
2019-01-10 09:56:03,265 17078信息Developpement odoo.modules.registry:数据库发出信号后使所有模型缓存无效。
2019-01-10 09:56:03,279 17076 INFO开发werkzeug:127.0.0.1--[2019年1月10日09:56:03]“ POST / calendar / notify HTTP / 1.0” 200-
2019-01-10 09:56:03,302 17073 INFO开发Werkzeug:127.0.0.1--[2019年1月10日09:56:03]“ GET /web/image?model=res.users&field=image_small&id=1 HTTP / 1.0英寸304-
2019-01-10 09:56:03,316 17077 INFO开发werkzeug:127.0.0.1--[2019年1月10日09:56:03]“ POST / web / action / load HTTP / 1.0” 200-
2019-01-10 09:56:03,391 17075 INFO开发werkzeug:127.0.0.1--[2019年1月10日09:56:03]“ POST /web/dataset/call_kw/web.planner/search_read HTTP / 1.0” 200-
2019-01-10 09:56:03,409 17074 INFO开发Werkzeug:127.0.0.1--[2019年1月10日09:56:03]“ POST /web/dataset/call_kw/res.users/activity_user_count HTTP / 1.0” 200-
2019-01-10 09:56:03,439 17076 INFO开发Werkzeug:127.0.0.1--[2019年1月10日09:56:03]“ POST /web/dataset/call_kw/mail.message/load_views HTTP / 1.0” 200-
2019-01-10 09:56:03,519 17074 INFO开发Werkzeug:127.0.0.1--[2019年1月10日09:56:03]“ POST /web/dataset/call_kw/ir.filters/get_filters HTTP / 1.0” 200-
2019-01-10 09:56:03,575 17074 INFO开发Werkzeug:127.0.0.1--[2019年1月10日09:56:03]“ POST /web/dataset/call_kw/mail.message/message_fetch HTTP / 1.0” 200-
*在nginx服务上生成的日志,我们不知道该日志是否与错误有关
2019/01/10 11:52:37 [错误] 165#165:* 10008上游过早关闭连接,同时从上游读取响应标头,客户端:82.127.91.106,服务器:[server_url],请求:“ POST / longpolling / poll HTTP / 1.1“,上游:” http://127.0.0.1:8072/longpolling/poll“,主机:” [server_url]“,引荐来源网址:” https://[server_url]/web?debug“
注释:
此行仅包含我的四个自定义模块之一,我不知道这是否正常。
[2019年1月10日09:56:02]“ GET / web / webclient / qweb?mods = web,base,bus,web_tour,mail,sales_team,calendar,web_planner,contacts,crm,note,custom_module1, auth_signup,web_active,backend_theme_v11,base_import,base_location,base_location_geonames_import,iap,send_sms,sms,web_diagram,web_editor,web_kanban_gauge,web_settings_dashboard,门户网站HTTP / 1.0“ 304-
还请注意; 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
错误。我在Debian环境中安装的Odoo上找不到任何解释。
最重要的是,那些问题也可能发生在同一服务器上
如果您在研究后发现此问题,但不适用于该问题的说明,这可能会对您有所帮助
在Windows安装中,存在一个模块来解决此问题:web_fix_blank_page。
仅在撰写此问题时才针对V10存在,并且仅针对Odoo解决了与操作系统相关的问题,从而导致空白页错误。
由于4种尝试的解决方案均无效,并且我尝试了两个版本的近距离构建的odoo,需要3个月的时间,所以我希望问题出在我的自定义模块上。却是成千上万的LOC。
是什么引起的,如何在所有这些文件中找到原因。
可能还有其他吗?会是什么?
我无法一一卸载模块来尝试找出错误所在的模块,至少不是全部。有两个原因:
似乎该错误仅在向自定义控制器(和/ web / session / authenticate)发出请求时才会发生。
答案 0 :(得分:1)
我发现了造成这种情况的原因。 5个月了,仍然没有答案,所以我将在这里发布答案。
如果您的控制器中有自定义路由,此答案可能会为您提供帮助。
永远不要以直接的方式重新定义Response
对象的任何属性。
这意味着,每次调用您所拥有的路由时,诸如Response.status = '400 Invalid credentials'
之类的行都会导致此错误发生。
执行Response.status = '400 Bad request'
后,您将重新获得对Response对象的控制,并中断odoo的常规工作流程。因此,它不再能够正确使用它,并且任何odoo路由返回的每个Response都将具有最后一个状态,直到您重新启动服务器为止(在此示例中为400,因此每个请求都被视为BadRequest,从而导致空白页并分散了其他错误,但是200可以这样做,因为重定向需要302。)
如果有人知道为什么Odoo无法重新获得对Response对象的控制,请随时编辑此答案(请这样做,这使我困扰了很长时间)。
快速浏览核心模块可为我们提供答案
raise werkzeug.exception.BadRequest("400 Invalid credentials")
请注意,默认情况下,您不会引发任何其他错误,而不是400。如果要这样做,则必须在odoo的根目录中修改http.py文件。但是请注意,这可能意味着您不像我一样理解HTTP协议。实际上,大多数情况下您应该返回200,没有HTTP错误,因此请求成功。但是,如果行为不是客户端期望的行为(例如连接时输入错误的密码),则应在返回的json中添加error
属性。
response = werkzeug.wrappers.Response(json.dumps({<i>[your json dictionary]</i>}), status="400 Invalid credentials")
return response