从网站的多个视图访问 MySQL

Accessing MySQL from multiple views of a web site

我正在使用 Python 和 Pyramid 编写网络工具。它使用 MySQLdb 访问 MySQL 数据库,并根据用户输入进行查询。我为该工具创建了一个用户帐户,并授予它对其使用的表的读取权限。

当我在单个选项卡中打开页面时,它工作正常,但如果我尝试在第二个选项卡中加载它,则在第一个搜索完成之前,页面不会加载。有没有办法解决这个问题,还是我只是想错误地使用 MySQL?

@AlexIvanov 想说的是,当您在控制台中启动 Pyramid 应用程序时,它是使用 Pyramid 的内置开发服务器提供服务的。这个服务器是单线程的,一个接一个地处理请求,所以如果你有一个很长的请求,比如需要 15 秒 - 你将无法在另一个选项卡中使用你的应用程序,直到那个长请求完成。内置网络服务器的这种顺序性质实际上是一个很棒的功能,它大大简化了调试。

在生产环境中,您的 Pyramid 应用程序通常由 "real" 网络服务器提供服务,例如 Apache 或 Nginx。此类网络服务器通常会生成多个 "workers",或使用多个线程来处理多个并发请求。

所以我怀疑您的设置没有任何问题(前提是您没有对 Pyramid 的初始脚手架做任何特别奇怪的事情,并且它仍在使用配置了 ZopeTransactionExtension 等的 SQLAlchemy 会话)。

A "single shared MySQL account" 绝不会阻止多个连接的客户端在 MySQL 中同时进行 运行 查询 - 事实是,对于开发服务器,您只有一个单线程客户端。