cherrypy.process.servers模块¶
从CherryPy3.1开始,cherryPy.server实现为 Engine Plugin .这是一个例子 cherrypy._cpserver.Server
,它是 cherrypy.process.servers.ServerAdapter
. 这个 ServerAdapter
类也设计为控制其他服务器。
多个服务器/端口¶
如果需要启动多个HTTP服务器(在多个端口或协议等上提供服务),可以手动注册每个服务器,然后使用引擎启动所有服务器。启动::
s1 = ServerAdapter(
cherrypy.engine,
MyWSGIServer(host='0.0.0.0', port=80)
)
s2 = ServerAdapter(
cherrypy.engine,
another.HTTPServer(host='127.0.0.1', SSL=True)
)
s1.subscribe()
s2.subscribe()
cherrypy.engine.start()
快速CGI/SCGI¶
还有绒毛F cgiserver和flupS 中的CGIServer类 cherrypy.process.servers
.例如,要启动fcgi服务器,请将其实例包装在ServerAdapter中:
addr = ('0.0.0.0', 4000)
f = servers.FlupFCGIServer(application=cherrypy.tree, bindAddress=addr)
s = servers.ServerAdapter(cherrypy.engine, httpserver=f, bind_addr=addr)
s.subscribe()
这个 cherryd 启动脚本将通过 -f
flag. Note that you need to download and install flup 你自己,不管你用什么 cherryd
或者没有。
FASTCGI¶
一个非常简单的设置可以让你的樱桃运行与fastcgi。您只需要flup库,外加一个运行中的apache服务器 mod_fastcgi
)或LightTPD服务器。
奇瑞码¶
你好,Py::
#!/usr/bin/python
import cherrypy
class HelloWorld:
'''Sample request handler class.'''
@cherrypy.expose
def index(self):
return "Hello world!"
cherrypy.tree.mount(HelloWorld())
# CherryPy autoreload must be disabled for the flup server to work
cherrypy.config.update({'engine.autoreload.on':False})
然后运行 /deployguide/cherryd 带有“-f”参数:
cherryd -c <myconfig> -d -f -i hello.py
阿帕奇¶
在httpd.conf的顶层:
FastCgiIpcDir /tmp
FastCgiServer /path/to/cherry.fcgi -idle-timeout 120 -processes 4
在相关的virtualhost部分中:
# FastCGI config
AddHandler fastcgi-script .fcgi
ScriptAliasMatch (.*$) /path/to/cherry.fcgi$1
轻TPD¶
为了 Lighttpd 您可以按照这些说明操作。在 lighttpd.conf
确保 mod_fastcgi
在中处于活动状态 server.modules
.然后,在你的 $HTTP["host"]
指令,按如下方式配置fastcgi脚本:
$HTTP["url"] =~ "" {
fastcgi.server = (
"/" => (
"script.fcgi" => (
"bin-path" => "/path/to/your/script.fcgi",
"socket" => "/tmp/script.sock",
"check-local" => "disable",
"disable-time" => 1,
"min-procs" => 1,
"max-procs" => 1, # adjust as needed
),
),
)
} # end of $HTTP["url"] =~ "^/"
请看 Lighttpd FastCGI Docs 有关可能的配置选项的说明。
- class cherrypy.process.servers.FlupCGIServer(*args, **kwargs)[源代码]¶
基类:
object
flup.server.cgi.wsgiserver的适配器。
- class cherrypy.process.servers.FlupFCGIServer(*args, **kwargs)[源代码]¶
基类:
object
flup.server.fcgi.wsgiserver的适配器。
- class cherrypy.process.servers.FlupSCGIServer(*args, **kwargs)[源代码]¶
基类:
object
flup.server.scgi.wsgiserver的适配器。
- class cherrypy.process.servers.ServerAdapter(bus, httpserver=None, bind_addr=None)[源代码]¶
基类:
object
HTTP服务器的适配器。
如果需要启动多个HTTP服务器(在多个端口或协议等上提供服务),可以手动注册每个服务器,然后使用总线启动所有服务器。启动::
s1 = ServerAdapter(bus, MyWSGIServer(host='0.0.0.0', port=80)) s2 = ServerAdapter(bus, another.HTTPServer(host='127.0.0.1', SSL=True)) s1.subscribe() s2.subscribe() bus.start()
- _start_http_thread()[源代码]¶
HTTP服务器必须在新的线程中运行,这样主线程才能持久地接收KeyboardInterrupt线程。如果在httpserver的线程中引发异常,那么它就会被困在这里,总线(以及我们的httpserver)也会关闭。
- property bound_addr¶
绑定地址,或者如果它是一个临时端口并且套接字已经绑定,则返回实际绑定的端口。
- property description¶
有关此服务器绑定位置的说明。