对于在 Python3 中的 Tornado 上使用非阻塞 MySQL api 有什么建议吗?

2024-04-14

我希望tornado支持异步sql数据库操作,在我阅读源代码之后,

http://www.tornadoweb.org/documentation/_modules/tornado/database.html#Connection http://www.tornadoweb.org/documentation/_modules/tornado/database.html#Connection

叹息,他们是阻塞版本。这里有一些选择。

计划A:找到一组类似于mysqldb模块的api,除了他们使用回调返回reuslt。抱歉,我没有找到一个显示示例的api,他们的api可以处理非阻塞mysql操作

Plan B:使用block版本。我听说tornado的作者建议开发者使用block版本,并且极度优化你的sql查询以缩短阻塞时间。

就我而言:服务器需要在高峰时段处理每秒接收 2k 请求,其中大多数需要从数据库查询和更新,建议每个操作需要 10ms,10ms*2k 超过 20s,这将是一场噩梦。在多线程编程中至少我可以建立更多的连接以获得更长的平均响应时间。

也许我在这里错过了一些要点,我对后端开发没有太多经验。但是我仍然认为使用阻塞 io api 是一个糟糕的主意,而框架是非阻塞的。

Plan C:放弃MySql而使用mongoDB,我听说mongoDB有一个名为asyncmongo的异步Python实现api,但我不确定学习mongoDB并把mongoDB作为我们的业务选择的风险


另一种选择是设置多处理(http://docs.python.org/library/multiprocessing.html?highlight=multiprocessing#multiprocessing http://docs.python.org/library/multiprocessing.html?highlight=multiprocessing#multiprocessing)并使用其中一个进程作为数据库的队列管理器。

将多处理与高效的 SQL 查询相结合,您应该最大限度地减少总体影响。阻塞调用仅在数据库处理队列管理器进程上完成,应用程序的其余部分可以运行而不会被阻塞。唯一受影响的人是尝试同时运行数据库查询的人。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对于在 Python3 中的 Tornado 上使用非阻塞 MySQL api 有什么建议吗? 的相关文章

随机推荐

  • char * 变量地址与 char[] 变量地址

    我从以下两个声明和初始化中打印出地址和字符串 char strPtr char This is a string made on the fly char charArray Chars in a char array variable 打
  • 我什么时候应该关闭数据库连接?

    PHP脚本中是否必须关闭连接 根据数据库服务器的配置 同时打开的连接数可能受到限制 所以 如果你的脚本 做一些查询 然后 进行一些长时间的计算 而不再进行任何查询 在完成所有查询后关闭连接并仅在需要时才打开连接可能会很有趣 不过 请注意 无
  • JavaScript 图像 onload 事件绑定

    我有这段代码循环遍历数组并加载图像并在加载图像时发出通知 for var i 0 i lt arr length i var imageObj new Image imageObj src url i imageObj onload fun
  • 如何从 mysqldump 恢复特定表

    我有一个使用以下命令获取的 mysqldump 文件 mysqldump u root password
  • PHPExcel 日期格式

    我从 MS SQL 服务器获取 2012 08 09 00 00 00 不带引号 格式的输出 但是 当我将其写入 Excel 文件时 我无法以日期格式写入它以在 Excel 上进行 dd mmm yyyy 格式 因此 我尝试以 date 2
  • 希腊字符串的长度大于应有的长度

    我正在编写一个程序 我将一串希腊字符作为输入 当我打印它的 len 时 它输出它的双精度 例如 如果 ch 希腊字符 或 ch printf d strlen ch 输出 4 而不是 2 如果 ch ab 则输出 2 这是怎么回事 您可以使
  • Vaadin 与 Bootstrap

    我计划制作一个应用程序 该应用程序在客户端具有复杂表单和逻辑验证的视图 我计划使用 AJAX 进行提交并具有一些视觉吸引力 我想要那些具有 Bootstrap 和 或 CoffeeScript 和 Vaadin 开发经验的人的推荐 我有两个
  • 如果 javascript "(new Date()).getTime()" 从 2 个不同的时区运行

    如果 JavaScript new Date getTime 同时从2个不同的时区运行 你会得到相同的值吗 这个值会受到运行浏览器的机器上设置的系统时间的影响吗 是的 它受系统时间的影响 但是 如果本地时间正确 对于计算机设置的任何时区 则
  • Rails 扩展 ActiveRecord::Base

    我已经阅读了一些有关如何扩展 ActiveRecord Base 类的内容 因此我的模型将具有一些特殊的方法 扩展它的简单方法是什么 分步教程 有几种方法 使用 ActiveSupport Concern 首选 阅读ActiveSuppor
  • Pyomo 中 TransformedPiecewiseLinearFunctionND 的正确用法是什么?

    背景 我正在尝试在 Pyomo 中使用代理模型 给定一组标记为 x y 和 z 的数据 我想将 z 写为 x 和 y 的廉价函数 Issue Pyomo 具有用于多元分段线性函数的工具 看here https pyomo readthedo
  • gcc 链接器获取未使用对象的列表

    我想识别具有许多库的大型 C 应用程序中未使用的目标文件 随着时间的推移 该项目已经增长了很多 现在我想搜索不再使用的库 以便我可以从依赖项文件中删除它们 gcc 链接器是否可以识别任何未使用的对象 例如 如果我使用 gcc 编译一个应用程
  • 拆分矩阵的列,对每个列的点图进行排序,然后在图中布局

    我有一个数据矩阵 带有行名称和列名称 我想为每列数据绘制一个点图 每个图表中的数据从最大到最小排序 然后将这些图在图中一个一个地排列 例如 如果我有以下矩阵 gt X W X Y Z A 11 7 8 7 15 4 100 0 B 18 1
  • 如何在 asmx 文件中添加 WebMethod

    我已经开始在 ASPX Web 项目中工作 该项目已经有一个现有的asmx文件 它包含大约 4 个 WebMethods 这 4 个 Webmethods 显示了http localhost 2133 WebServices asmx 现在
  • 使用 ruby​​ on Rails 向静态网站添加功能

    我是 ruby on Rails 的新手 我有一个包含很多静态页面的网站 我想向网站添加一些动态页面 我将在 ruby on Rails 中开发这些页面 当用户单击静态页面之一上的按钮之一时 将触发这些页面提供的功能 我想我将把动态页面放在
  • 将原始图像数据放在 Src Attr 中是否更有效?

    我最近发现src图像的属性允许您将原始的 Base 64 图像数据直接放入其中 我是否正确地认为这在技术上比单独的图像文件更有效 因为不必对图像提出额外的请求 或者开销太小以至于不值得 另外 假设我最终这样做了 获取原始数据的最佳方法是什么
  • vb.net 的 file.shortpath

    我正在将我的项目从 vb6 转换为 vb net vb net中有shortpath的模拟方法吗 Dim DestinationFile As Scripting File DestinationFile ShortPath Thanks
  • 具有 OneToOne 关系的 Django 模型?

    假设我使用默认值auth models User加上我的习惯Profile and Address模型看起来像这样 class Profile models Model user models OneToOneField User prim
  • 实体框架数据库首次 POCO t4 生成和验证

    注意 我使用的是 ASP Net 应用程序而不是 MVC 因此不支持验证属性 我使用数据库优先方法 然后使用 POCO t4 模板生成 POCO 类 我将生成的 POCO 类移动到它自己的库 Domain Model 中 现在我想使用 En
  • Rails:ActionMailer 的运行时配置?

    我想通过 Gmail 从我的应用程序发送少量电子邮件 现在 SMTP 设置将在运行时确定 即 从数据库 可以这样做吗 编辑 我可以在该类的方法之一中设置 ActionMailer 子类 名为 Notifier smtp 设置 这样我就可以设
  • 对于在 Python3 中的 Tornado 上使用非阻塞 MySQL api 有什么建议吗?

    我希望tornado支持异步sql数据库操作 在我阅读源代码之后 http www tornadoweb org documentation modules tornado database html Connection http www