Py学习  »  Python

哪一个是支持代码重新加载的最简单的python wsgi开发服务器?[关闭]

Jorge Vargas • 4 年前 • 728 次点击  

据我所知

  1. wsgiref-无代码重新加载
  2. Cherrypy-不仅仅是服务器
  3. mod_wsgi-所有apache开销
  4. httpserver-paste是一个包含其他内容的大包
  5. 绒毛-和浆糊一样,太多的东西。
  6. 产卵-从未使用过,但看起来足够轻。
  7. Tornado-不是真正的wsgi+完整的“框架”
  8. werkzeug-运行命令

还有其他人吗?你喜欢哪一个?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/42955
 
728 次点击  
文章 [ 7 ]  |  最新文章 4 年前
user222202
Reply   •   1 楼
user222202    14 年前

除了其他粘贴模块之外,您还可以在任何wsgi服务器上使用paste.reloader。

# run paste reloader
import paste.reloader as reloader
reloader.install()

# run wsgiref server
from wsgiref import simple_server
simple_server.make_server('', 8080, main_wsgi_app).serve_forever()

这够简约吗?

user222202
Reply   •   2 楼
user222202    14 年前

另外,您还错过了web.py,它既小又支持代码重新加载。

bobince
Reply   •   3 楼
bobince    14 年前

一个非常简单的方法是cgi(与常规web服务器一起使用 wsgiref.handlers.CGIHandler )在生产服务器上的性能很差,但对开发很好。您可以编写一个同时作为mod_wsgi wsgiscriptalias(公开 application 对象),并作为mod_cgi scriptalias(调用 wsgiref 什么时候 __name__=='__main__' )

许多wsgi环境都有重新加载基本脚本的方法,例如mod_wsgi的 WSGIScriptReloading ,默认情况下处于启用状态。不幸的是,您可能会将大部分代码放在模块中,这并不容易重新加载。在mod_wsgi中,您还可以通过发送sigint来执行在守护进程模式下的重新加载。不幸的是,为了知道是否需要重新加载,您仍然需要嗅探用于mtime更新的每个模块。它在嵌入式模式下不工作。

一个混乱但可行的方法是嗅探属于应用程序一部分的所有模块,如果有自上次检查以来已更新的模块,则将它们全部重新加载。您必须立即重新加载它们,方法是从 sys.modules 查找(删除 None -当你在那里的时候,为了避免相对的导入查找问题,也要有值的条目),以确保它们不会保留对旧版本的交叉引用。当然,他们不能在你的申请之外留下其他的参考资料。您可以在 ModuleUpdater here .

(这个软件还没有准备好发布,但是已经为我的wsgi应用程序提供模块重新加载了几年,而且看起来很稳定。其思想是将您的所有wsgi应用程序放在一个包中的一个应用程序类中,您可以从一个wsgi/cgi/command-line入口点脚本导入该包;您可以在该脚本中包含部署配置。)

Jason Baker
Reply   •   4 楼
Jason Baker    14 年前

我推荐浆糊或樱桃。他们是最容易起床跑步的。

Alex Boschmans
Reply   •   5 楼
Alex Boschmans    14 年前

到目前为止,我一直在使用cherrypy,与django(虽然不在您的列表中,但它是我使用的唯一其他dev服务器)相比,我更喜欢它。它做到了上面所说的:它只有在你需要的时候才在那里,并且在剩下的时间里都不碍事。

使用django似乎需要订阅django的做事方式。尽管django提供了更多现成的功能(默认的管理界面,网页上的小部件),但使用cherrypy似乎只是另一个具有非常好(通常会让您惊讶于额外)功能的导入。

Mark Hildreth
Reply   •   6 楼
Mark Hildreth    14 年前

从Werkzeug查看Run_Simple:

http://werkzeug.pocoo.org/documentation/0.5.1/serving.html

除了自动重新加载代码外,您还可以使用_debugger=true在应用程序顶部包括它们漂亮的spiffy调试器(在回溯的每一行中都包括控制台)。

LeafStorm
Reply   •   7 楼
LeafStorm    14 年前

你可能想看的是 Werkzeug -它是一个wsgi实用工具工具包。它包括一个runserver函数,该函数接受wsgiref服务器并添加自动重新加载代码(您还可以将其配置为在配置文件更改时重新加载)和一个很棒的调试器。

另一方面,您对框架的轻蔑使您听起来像是打算从头开始处理所有wsgi内容,在这种情况下,我建议您使用werkzeug的实用函数来处理解析请求和生成响应。这比你自己做要有趣得多。(为了对圭多的爱,请不要使用 cgi.FieldStorage !)