我的网页需要 10 到 20 次数据库查询才能获取所有必需的数据。
通常在发出查询后,Django 线程/进程会被阻塞,等待结果返回,然后它会恢复执行,直到到达下一个查询。
有什么方法可以异步发出所有查询,以便数据库服务器可以并行处理它们?
我正在使用 MySQL,但也想了解其他数据库的解决方案。例如,我听说 Postgresql 有一个异步客户端库——在这种情况下我将如何使用它?
我的网页需要 10 到 20 次数据库查询才能获取所有必需的数据。
通常在发出查询后,Django 线程/进程会被阻塞,等待结果返回,然后它会恢复执行,直到到达下一个查询。
有什么方法可以异步发出所有查询,以便数据库服务器可以并行处理它们?
我正在使用 MySQL,但也想了解其他数据库的解决方案。例如,我听说 Postgresql 有一个异步客户端库——在这种情况下我将如何使用它?
这个最近的博客条目似乎暗示它没有内置到 django 或 rails 框架中。我认为它很好地涵盖了这个问题,并且非常值得与评论一起阅读。
http://www.eflorenzano.com/blog/post/how-do-we-kick-our-synchronous-adiction/(断开的链接)
我想我记得 Cal Henderson 在他出色的演讲中提到了这个缺陷http://www.youtube.com/watch?v=i6Fr65PFqfk
我天真的猜测是你可能能够用单独的 python 库破解一些东西,但是你会失去很多 django 给出的 ORM/模板惰性评估东西,以至于你可能会使用另一个堆栈。再说一次,如果您只是在大型 django 项目中优化几个视图,那可能没问题。
我有一个类似的问题,我用 javascript/ajax 解决了它
只需使用基本标记加载模板,然后执行 severl ajax 请求来执行查询并加载数据。您甚至可以显示加载动画。用户将有一种 web 2.0 的感觉,而不仅仅是令人沮丧的页面加载。当然,这意味着每个页面需要更多的 HTTP 请求,但由您决定。
这是我的示例的外观:http://artiox.lv/en/search?query=test&where_to_search=all(断开的链接)