plone的实验性无阻塞期货

collective.futures的Python项目详细描述


集体期货

https://secure.travis-ci.org/datakurre/collective.futures.png

这是提供另一个 在plone上进行异步(非阻塞)处理的方法。

这次我们谈的是承诺和未来: promises是异步运行的函数,它提供 他们的结果是为你的代码添加期货。

其他选择的一个主要区别是 不需要任何附加服务,但只需要 扑通一声在Zope实例上运行。

一个主要的限制是异步执行的 代码无法以任何方式访问数据库(或者 面临意想不到的后果)。而且,这不会带来任何好处 具有haproxy和固定数量的每个实例当前请求。

示例

fromProducts.Five.browserimportBrowserViewfromcollectiveimportfuturesdefmy_async_task(*args):# a lot of time consuming async processingreturnu'my asynchronously computed value'classMyView(BrowserView):def__call__(self,*args):try:returnfutures.result('my_unique_key')exceptfutures.FutureNotSubmittedError:futures.submit('my_unique_key',my_async_task,*args)returnu'just a placeholder value'

fromProducts.Five.browserimportBrowserViewfromcollectiveimportfuturesdefmy_async_task(*args):# a lot of time consuming async processingreturnu'my asynchronously computed value'classMyView(BrowserView):def__call__(self,*args):returnfutures.resultOrSubmit('my_unique_key',u'placeholder value',my_async_task,*args)

解释

这个包使用的方法是 请求分成两个单独的过程:

每当一些附加代码 需要异步计算一个值,它 尝试先请求命名的未来结果,然后才请求 提交一个promise函数来计算将来的结果。

如果提交了任何期货,最初的答复是 已发布,但当前事务被中止 提交的承诺函数在 与默认zope线程分离的并行线程 (甚至在并行过程中)和 它们的返回值被收集 (另请参阅python中concurrent.futures的文档)。

当所有的承诺功能都解决后,最初的请求 被克隆,解析的值被设置为未来值和新的 已发送内部请求。

在第二次传递之后,加载项代码可以使用 现在可用的期货,而不是提交更多的期货,以及 最后,响应会一直发布到 浏览器。


有关更多背景信息:http://datakurre.pandala.org/2014/05/asynchronous-stream-iterators-and.html

更改日志

0.9.3(2018-09-05)

  • 修复plone.protect试图将PromiseWorkerStreamiterator解析为 XML格式 [数据库]

0.9.2(2018-06-29)

  • 添加到记录未来中的异常以获取完整的异常堆栈跟踪 [数据库]

0.9.1(2016-05-25)

  • 修复嵌套请求未传递已解决的未来的问题 [数据库]

0.9.0(2014-10-23)

  • 第一次释放。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JBossJava进程内存持续增长   Java postincrement(++)在作为参数传递时表现不符合预期   TableView列的java编辑值   java根据springboot@Scheduled注释使用的条件动态修改调度程序计时   java无法将jsp表单值设置为类变量   java ParseQuery from字段未保存   java为什么日历返回月份。是否获取(Calendar.MONTH)上个月而不是当前月?   java无法获取api密钥的md5指纹   java通用DAO和嵌套属性支持   javapomi的版本已经改变了。从OJDBC6到OJDBC8的xml。使用新版本OJDBC8执行某些查询时出现锁定问题   java IntelliJ颜色方案定制   java从第三方读取Linux存储库   amazon s3在AWS s3 Java SDK中设置对象元数据   java一对多映射比