当前位置: 首页 > 面试题库 >

Twisted + SQLAlchemy及其最佳方法

袁凌
2023-03-14
问题内容

因此,我正在编写另一个基于Twisted的守护程序。它会像往常一样具有xmlrpc接口,因此我可以轻松地与它进行通信,并让其他进程根据需要与它交换数据。

该守护程序需要访问数据库。我们一直在使用SQL
Alchemy代替用于最新项目的硬编码SQL字符串,这些字符串大多数是为Pylons中的Web应用程序完成的。

我们想对此应用程序执行相同的操作,并重复使用利用SQL
Alchemy的库代码。那么该怎么办?当然,由于该库是为在Pylons应用中使用而编写的,因此所有人都已经习惯了所有简单明了的阻塞样式代码,并且所有非阻塞都由Pylons通过线程,线程局部变量,作用域会话等神奇地处理。上。

所以现在对于Twisted,我想我有点卡住了。我可以:

  1. 只需直接编写我需要的SQL(如果它很小),并在需要打db时使用扭曲的dbapi池来执行runInteractions等。
  2. 使用我们库中的对象和本质上阻塞的方法,然后不时在我的Twisted守护程序中阻塞。呸。
  3. 使用sAsync(最近一次更新是在2008年),并且可以重用我们已经定义的模型,但实际上并没有,并且不能解决库代码也需要在Pylons中工作的问题。这甚至可以与最新版本的SQL Alchemy一起使用吗?谁知道。这个项目看起来很棒-为什么它显然被放弃了?
  4. 产生一个单独的子进程,使其处理库代码及其所有阻塞,当对象通过xmlrpc通过YAML编组时,结果准备好后返回到我的守护程序。
  5. 使用deferToThread,然后清除已返回的对象并确保进行急切的加载,这样我就可以拥有所有需要的东西。在我看来有点丑陋。

我还使用Python 2.5.4
atm,所以还没有使用2.6,并且我认为我不能从将来进行导入就可以访问其中的新酷处理模块。没关系,尽管我猜想我们已经很好地处理了进程间通信。

因此,我倾向于使用选项4,因为这样可以避免使用选项1造成逻辑复制的致命错误,同时也避免使用线程。

不过,我的第一个尝试是将选项2处理起来,然后将对库代码的调用分离出来,如果看起来很有可能某个东西可能花费太长时间阻塞,则将其分离到一个单独的过程中。伤心。也许Stackless
Python和Twisted的结合在这里会很有趣。

还有更好的主意吗?


问题答案:

首先,不幸的是,我只能赞同您的观点,即扭曲和SQLAlchemy不能很好地配合。我曾经和他们一起工作过,可能会担心将它们放在一起会产生复杂性。

到目前为止,我所知道的所有数据库集成层都使用了Twisteds线程集成层,并且如果您想不惜一切代价避免这种情况,那么您几乎会陷入列表中的第4点。

另一方面,我看到了使用deferToThread()进行数据库连接代码的html" target="_blank">示例,以及运行良好的朋友。

无论如何,如果您愿意考虑使用除SQLAlchemy之外的其他框架,则可以使用一些指针:

DivMod家伙一直在做一些关于基于Storm ORM(谷歌为“ storm orm”的数据库)的扭曲-数据库集成的尝试性工作。

有关示例,请参见此链接:

http://divmod.readthedocs.org/en/latest/products/nevow/storm-
approach.html

另外,请转至DivMod的站点,并查看其Axiom db层的来源(可能对您没有任何用处,因为它仅是Sqlite,但它的原理可能会有用)。



 类似资料:
  • 问题内容: 我正在阅读有关sqlalchemy的信息,并且看到了以下代码: 我应该在库中使用常量将“类型”设置为int吗?还是我应该使枚举成为枚举? 问题答案: SQLAlchemy从0.6开始具有Enum类型:http ://docs.sqlalchemy.org/en/latest/core/type_basics.html?highlight=enum#sqlalchemy.types.En

  • 问题描述 当前分页查询已经不局限于传统的通过用户单击页码栏实现分页 比如微博的首页就实现了滚动实时分页 所以出于好奇想问问大佬当前分页查询都有哪些成熟的实现方案,其各自的适用场景是什么

  • 问题内容: 谁能推荐通过CSS破解IE8样式的最佳方法,我最近一直在轻松地将IE8渲染作为IE7-但想知道是否最好添加IE8黑客? 问题答案: 您应该反转您的方法。首先,您的网站在现代浏览器(如Firefox,Chrome,Opera,IE 9)中应该看起来不错,然后您就可以开始担心其他网站了。 正如其他人所建议的那样,条件注释可以成为您的朋友。 首先,您应该开发CSS以使其在现代浏览器中看起来不

  • 问题内容: 我有一个使用 像素 渲染页面的网站。但是,当我在具有不同屏幕分辨率的不同设备中查看网站时, 整个页面将无法容纳在屏幕中 ,如果我使用 百分比 ,页面内容将会 受到挤压 。 是响应式网页设计是设计网页的正确选择。如果是这样,我几乎不用担心。 将现有网站转换为包含响应式设计所涉及的风险是什么? 有没有可用的框架来做到这一点,哪个是最好的框架 设备和浏览器如何支持它 问题答案: 使用媒体查询

  • 问题内容: 我想为php网站使用bbcode过滤器。(我正在使用cakephp,它将是一个bbcode助手)我有一些要求。 Bbcode可以嵌套。 所以类似的东西是有效的。 Bbcode可以具有0个或多个参数。 范例: Bbcode可能具有多种行为。 可以说,将转换为 或视频bbcode可以在youtube,dailymotion …之间进行选择。 我认为它可以满足我的大部分需求。我用正则表达式做

  • 问题内容: 我正在创建一个Web API,需要一种很好的方法来非常快速地生成一些格式正确的xml。我找不到在python中执行此操作的任何好方法。 注意:一些库看起来很有前途,但要么缺少文档,要么仅输出到文件。 问题答案: 使用lxml: 输出: 有关更多信息,请参见教程。