我有一個很奇怪的問題。我將Lighttpd配置爲通過/測試到fastcgi後端。 只是在配置用Lighttpd設置gevent,奇怪的東西
fastcgi.server = ("/test" =>
("127.0.0.1" =>
(
"host" => "127.0.0.1",
"port" => 7101,
"docroot" => "/",
"check-local" => "disable"
)
)
)
加入這個現在,當我開始flup例子,並創下127.0.0.1:80/test一切工作正常。測試uWSGI,仍然很好。
flup例如:
#!/usr/bin/env python
from flup.server.fcgi import WSGIServer
def myapp(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/plain')])
return ['Hello World']
WSGIServer(myapp, bindAddress = ('127.0.0.1',7101)).run()
現在,唯一的問題是,當我開始GEVENT將無法正常工作。 Lighttpd mod_fastcgi說後端剛被阻塞。
有趣的是,當我改變處理程序只返回字符串,原因WSGI需要迭代,並從我的瀏覽器,它按預期命中127.0.0.1:7101。這應該是WSGIServer,它如何以這種方式工作?
這裏是GEVENT代碼:
#!/usr/bin/python
"""WSGI server example"""
from gevent.wsgi import WSGIServer
def app(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
#return ["Hello World", StopIteration] # this is WSGI test, not working
return "Hello World"
# when set like this, frontend :80 still wont work (500 Internal error),
# but 127.0.0.1:7101 work like standard http
if __name__ == '__main__':
WSGIServer(('', 7101), app).serve_forever()
底線是,爲什麼只有在此設置GEVENT不會工作,都flup和uWSGI正在努力?官方示例here中沒有提到一些祕密設置。
嗯,我需要fcgi進行負載平衡。我不明白,官方文檔和例子說,這是WSGI服務器看到這裏https://bitbucket.org/denis/gevent/src/tip/examples/wsgiserver.py#cl-4 – bradojevic 2012-08-05 23:43:34
我認爲,這意味着,它是爲處理程序提供wsgi接口的服務器:environ,start_response等 – 2012-08-05 23:45:42
如果您需要gevent和fcgi,則可以使用gent-loop中的uwsgi。 – 2012-08-05 23:51:38