0

java、ruby 等有许多基于延续的框架,但在 python 中没有。Nagare 框架在一定程度上解决了这个问题,但它不使用标准 python,而是使用 stackless python 来解决延续问题。

我想知道,

在标准 python 中创建这样的延续 web 框架的标准 python 约束的哪一部分?

以及解决方法是什么?什么是延续框架架构的标准部分(因为模型视图控制器在 MVC 中)?

4

2 回答 2

2

在您开始考虑编写基于延续的框架之前,您需要一种具有延续(或至少可用于模拟延续的协同程序)的编程语言。延续是像循环、闭包或函数这样的控制结构,而不是像 MVC 这样的设计模式。不幸的是(当前)标准 Python 不支持延续。这也是人们开发无堆栈 python 的原因之一。

Java 有点特殊。语言本身不支持延续,但虚拟机支持(为了支持异常)。我认为他们所做的是在运行时修改编译的字节码并重新排序指令,使其看起来支持延续。有点像通过猴子补丁实现无堆栈python。

于 2010-09-18T04:42:23.543 回答
2

对,延续是一种语言的属性,遗憾的是 CPython 没有延续。

纯 Python 中的解决方法是众所周知的:例如使用 Twisted 和 Tornado 之类的回调/延迟器,或者在任何地方使用“yield”来模仿协同程序,例如 Diesel。但是这两种方法都迫使您改变设计和编码应用程序的方式。也可以“重播”延续,这是基于延续的框架自动处理“后退”按钮问题的方式。

最后,准确地说,在 Nagare 中,我们使用了对冻结的 tasklet 的酸洗来获得一个延续对象。

于 2010-09-18T20:45:04.113 回答