首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python扭曲连接和数据库连接

Python扭曲连接和数据库连接
EN

Stack Overflow用户
提问于 2009-11-10 11:20:59
回答 4查看 6K关注 0票数 5

我们的项目包括同步应用程序(短生命周期)和异步扭曲应用程序(长生命周期)。我们正在重构我们的数据库,并将构建一个API模块来解耦该模块中的所有SQL。我想创建该API,以便同步和异步应用程序都可以使用它。对于同步应用程序,我希望对数据库API的调用只返回数据(阻塞),就像使用MySQLdb一样;但对于异步应用程序,我希望对相同API函数/方法的调用是非阻塞的,可能会返回延迟的。任何人有任何提示,建议或帮助,他们可能会提供我做这件事?提前谢谢你,道格

EN

回答 4

Stack Overflow用户

发布于 2009-11-10 14:26:55

twisted.enterprise.adbapi似乎是可行的--您认为它不能满足您的需求吗?如果是,您能解释一下原因吗?

票数 3
EN

Stack Overflow用户

发布于 2009-11-11 08:17:49

在Twisted中,您基本上需要一个函数的包装器,该函数返回一个延迟(比如Twisted DB层),等待它的结果,然后返回它们。但是,您不能忙着等待,因为这会耗尽您的反应器周期,并且使用Twisted非阻塞等待来检查要完成的任务可能效率很低。

inlineCallbacks或deferredGenerator会解决你的问题吗?他们需要一辆现代的Twisted。See the twistedmatrix docs

代码语言:javascript
复制
def thingummy():
   thing = yield makeSomeRequestResultingInDeferred()
   print thing #the result! hoorj!
thingummy = inlineCallbacks(thingummy)

另一种选择是有两个方法来执行相同的SQL模板,一个使用runInteraction,它阻塞,另一个使用runQuery,它返回一个Deferred,但这将涉及到更多的代码路径,这些路径做同样的事情。

票数 1
EN

Stack Overflow用户

发布于 2009-11-10 11:26:45

你有没有考虑过从continuation-passing style借用一个页面?Stackless Python supports continuations directly,如果您正在使用它,并且这种方法似乎已经有了gained some interest

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1705444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档