如果是这样,有什么好处?(确保它将避免重新启动网络服务器)。但这不是性能瓶颈吗?对于生产,是否可以让 web2py 直接从字节码跳过解释阶段(缓存)运行(第一个请求除外)?
问问题
811 次
2 回答
6
在 web2py 中,默认情况下,模型、视图和控制器中的所有代码(不是 web2py 代码,不是模型、视图、控制器导入的模块中的代码)在每次请求时都会被解释。这允许使用第三方 Web 服务器(例如 apache),并且仍然能够看到代码中的更改立即反映而无需重新启动。PHP 以同样的方式工作。性能损失可以忽略不计,因为解析代码的时间少于执行代码的时间。
无论如何,在管理界面中有一个“编译”按钮,它将字节码编译您的代码并将视图层次结构(扩展和包含的视图)折叠到每个操作的单个文件中,并消除性能损失。它还允许您在不泄露源代码的情况下分发编译的代码字节码。许可证允许它。
于 2010-09-06T16:53:27.127 回答
2
我并不特别了解 web2py,但它像大多数其他 Python 框架一样通过 WSGI 运行。这意味着代码仅在进程启动时被解释,否则将保存在内存中。进程由 Web 服务器本身动态启动和终止,但通常持续多个请求。
.pyc
在任何情况下,Python 解释器通常会在第一次读取代码时创建一个字节码文件。这在网络服务器环境中工作,就像在其他任何地方一样。
然而,最后,通常认为代码解析并不是一个特别的瓶颈——转换为字节码的速度非常快。在 Web 应用程序中,您的瓶颈几乎肯定在其他地方(可能在与数据库的连接中)。
于 2010-09-06T08:19:59.577 回答