有很多基于延续的java,ruby等框架,但是在python中没有。Nagare框架在一定程度上解决了这个问题,但它没有使用标准python,而是使用无栈python来解决延续问题。
我在想,
在标准python中创建这样的延续web框架的标准python约束的哪一部分?
它的解决方法是什么?延续框架架构中的标准部分是什么(就像MVC中的模型、视图和控制器一样)?
发布于 2010-09-18 12:42:24
在开始考虑编写基于延续的框架之前,您需要一种具有延续的编程语言(或者至少可以用来模拟延续的协同例程)。延续是一种类似循环或闭包或函数的控制结构,而不是像MVC那样的设计模式。不幸的是,(目前)标准Python不支持延续。这也是人们开发无栈蟒蛇的原因之一。
Java是一个有点特殊的情况。语言本身不支持延续,但虚拟机支持(为了支持异常)。我认为他们所做的是在运行时修改编译后的字节码,并重新排序指令,使其看起来支持延续。这有点像用猴子补丁来实现无堆栈的python。
发布于 2010-09-19 04:45:04
是的,延续是一种语言的属性,但遗憾的是CPython没有延续。
纯Python中的变通方法是众所周知的:例如,使用像Twisted和Tornado这样的回调/延迟,或者在任何地方使用‘well’来模仿协同例程,比如迪塞尔。但是这两种方法都会迫使您改变设计和编写应用程序的方式。还可以“重放”延续,这就是基于延续的框架如何自动处理“后退”按钮问题。
最后,准确地说,在Nagare中,我们使用了一个冻结的微线程的酸洗来获得一个延续对象。
https://stackoverflow.com/questions/3740330
复制相似问题