- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
Bottle 在 Python 内置的 wsgiref 服务器实现中做了什么 WSGIref简单的服务器不?例如,当我查看 Bottle 时,它遵循 WSGI 标准,并且文档指出:
1.5.1 Server Options The built-in default server is based on wsgiref WSGIServer. This non-threading HTTP server is perfectly fine for development and early production, but may become a performance bottleneck when server load increases.
There are three ways to eliminate this bottleneck:
- • 使用不同的多线程或异步服务器。
- • 启动多个服务器进程并使用负载平衡器分散负载。
- • 两者都做 [强调我的]
然而,我读到的所有内容都表明不要使用 Python wsgrief 服务器进行任何生产。
Bottle 对 wsgrief 做了哪些 Python 内置 wsgiref 没有做的事情?我并不是真的质疑使用异步服务器或“更大”更“可扩展”的 WSGI 服务器是否明智。但是,我想知道 Bottle 正在使用 wsgiref 服务器做什么,以使其适合“早期生产”,而常规库则不然。
我的应用程序将为不到 20 人提供使用 PostgreSQL 或 MySQL 数据库、CRUD 操作的服务。我想你可以用 Flask 提出类似的问题。
供引用,
http://bottlepy.org/docs/dev/bottle-docs.pdf [pdf] https://docs.python.org/2/library/wsgiref.html#module-wsgiref.simple_server https://github.com/bottlepy/bottle/blob/master/bottle.py
这是 Bottle 的实现,至少用于打开端口:
class WSGIRefServer(ServerAdapter):
def run(self, app): # pragma: no cover
from wsgiref.simple_server import make_server
from wsgiref.simple_server import WSGIRequestHandler, WSGIServer
import socket
class FixedHandler(WSGIRequestHandler):
def address_string(self): # Prevent reverse DNS lookups please.
return self.client_address[0]
def log_request(*args, **kw):
if not self.quiet:
return WSGIRequestHandler.log_request(*args, **kw)
handler_cls = self.options.get('handler_class', FixedHandler)
server_cls = self.options.get('server_class', WSGIServer)
if ':' in self.host: # Fix wsgiref for IPv6 addresses.
if getattr(server_cls, 'address_family') == socket.AF_INET:
class server_cls(server_cls):
address_family = socket.AF_INET6
self.srv = make_server(self.host, self.port, app, server_cls,
handler_cls)
self.port = self.srv.server_port # update port actual port (0 means random)
try:
self.srv.serve_forever()
except KeyboardInterrupt:
self.srv.server_close() # Prevent ResourceWarning: unclosed socket
raise
最佳答案
编辑:
What is Bottle doing in its wsgiref server implementation that the built in Python WSGIref simple server is not?
What does Bottle do with wsgrief that the built in Python wsgiref does not?
没有任何(实质内容)。
<小时/>不确定我是否理解你的问题,但我会尽力提供帮助。
我感到困惑的原因是:您发布的代码片段准确地回答了[我认为是]您的问题。 Bottle 的 WSGIRefServer
类除了包装 wsgiref.simple_server
之外没有做任何实质性的事情。 (我称日志记录和 IPv6 调整无关紧要,因为它们与“生产就绪性”无关,而我认为“生产就绪性”是您问题的核心。)
您是否可能误解了文档?我想也许是的,因为你说:
I'd like to know what Bottle is doing with the wsgiref server that makes it okay for "early Production," the regular library does not.
但是 Bottle 文档指出 Bottle 的 WSGIRefServer
不应该用于处理高吞吐量负载。
换句话说,WSGIRefServer
与 wsgiref
相同,而我认为您将文档解释为前者在某种程度上得到了改进超过后者。 (事实并非如此。)
希望这有帮助!
关于python - Bottle 的内置 WSGI 服务器与标准 Python wsgiref 服务器模块有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35018668/
我正在尝试了解 WSGI 的功能并需要一些帮助。 到目前为止,我知道它是一种服务器和应用程序之间的中间件,用于将不同的应用程序框架(位于服务器端)与应用程序连接,前提是相关框架具有 WSGI 适配器。
正如之前多个问题/答案中所强调的,即this和 this我已将 WSGISocketPrefix 配置为 /etc/httpd/run/wsgi /etc/httpd/run目录具有root:apac
正如之前多个问题/答案中所强调的,即this和 this我已将 WSGISocketPrefix 配置为 /etc/httpd/run/wsgi /etc/httpd/run目录具有root:apac
我刚刚开始使用协同程序,并阅读了有关 gevent 和 greenlets 的内容。为了进行测试,我通过 gevents pywsgi 模块提供了这段代码: from gevent.pywsgi im
我正在尝试了解 WSGI 的工作原理。我知道我可以阅读规范,但我仍然想知道如何创建 spawning应用?一个完整的“ Hello World ”。 有人可以给我举个例子吗?有了一切,文件命名,创建模
我正在构建一个简单的 Web 服务,要求对所有请求进行签名。签名哈希是使用包括请求正文的请求数据生成的。我的愿望是拥有一个验证请求签名的中间件组件,如果签名无效则以错误响应。问题是中间件需要使用 en
为什么会出现此错误? Daemon process called 'dom_server' cannot be accessed by this WSGI application: /home/sta
HTTP格式 HTTP GET请求的格式: ? 1
我读过很多类似 this one 的帖子详细说明如何使用 WSGI 动态返回图像。但是,我看到的所有示例都是以二进制格式打开图像,读取它然后返回该数据(这对我来说很好用)。 我一直在尝试使用内存中的
我正在尝试使用 Apache 为我的网页提供服务,并且想知道 wsgi.py 和 django.wsgi 之间的区别。 两者都有文档,但我不确定应该实现哪一个。我在 Django 1.4、Apache
我正在尝试使用 uwsgi 运行 Django 应用程序。我发现的大多数指令都引用了“--wsgi-file”和“--module”来指定应用程序,但是“uwsgi”没有提到这些选项,当我尝试使用它们
我对以下术语感到非常困惑, 1.wsgi 2.python_wsgi 3.wsgi服务器 4. mod_wsgi 5. python web服务器网关接口(interface)(PEP3333) 这些
我通过如下设置 apache 服务器在 apache2/Mac OS X 上使用 mod_wsgi。 Order allow,deny Allow from all WSGIScri
对于我们的网络服务,我编写了一些逻辑来防止 multipart/form-data POST 大于 4mb。 它归结为以下内容(我已经剥离了所有 WebOb 用法并将其简化为普通的 WSGI 代码):
我有一个 Flask Web 服务器,为使用 Flask-login 的用户进行基本帐户身份验证。如果我自己运行网络服务器,帐户身份验证将按预期工作。使用 Apache 和 mod-wsgi 运行 F
我在 centos 6.9 机器上使用 httpd 和 mod_wsgi 和 httpd 这里是相关文件,我正在尝试在 apache 2.15 版本上部署 django,尝试谷歌但无法解决问题,任何帮
我将在虚拟主机的 ubuntu 服务器上设置一个 django 应用程序。 我已经配置了我的虚拟主机,所以出现了一些问题! 但是由于您在此处看到的一些问题,它仍然给我 500 内部错误: mod_ws
我有一个相当简单、朴素的 Python/WSGI/Pyramid 网络服务器。 它在使用 pyramid.config.Configurator().make_wsgi_app() 构建的服务器上使用
我试图在 Amazon 的 EC2 实例上发布我的网站,但我一直收到 500 错误。我真的不知道为什么。 //日志文件 [Sun Feb 17 23:12:48.066802 2013] mo
我正在尝试在 ubuntu 上的 apache2 上安装 mod_wsgi。所以我安装了 libapache2-mod-wsgi 包,我用 a2enmod 激活了他。 我有一个网站 (language
我是一名优秀的程序员,十分优秀!