網上更多文章是用Django、webpy等架構的前提下,由于我隻是用其CGI而不是搞純web開發,是以暫時不打算用這類架構,直接用flup包(其實大多數架構WSGI也是封裝的flup)。
廢話不多說,進入正題,先看下需要的環境和工具:
1、Linux2.6(廢話- -!) 2、Nginx(需包含fastcgi子產品) 4、Python
安裝都是些正常方法,就不一一介紹了
nginx的fastcgi配置照搬php的即可。
先上張簡單畫的原理圖

spawn-fcgi是個工具,用來以fastcgi方式開啟多個WSGIServer程序。
例:
spawn-fcgi -f /data/WSGIServer.py -a 127.0.0.1 -p 5678 -u www -F 5
-f WSGIServer腳本的決定路徑
-a fastcgi綁定的ip
-p fastcgi綁定的端口
-u 已什麼身份運作
-F 要啟動的程序數(很多人以為是-C,其實那是PHP專用的,這裡要用-F)
需要編碼的部分就是WSGIServer這裡了,貼個簡單測試代碼
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import flup.server.fcgi as flups
def application(environ, start_response):
"""該函數可以寫成子產品import導入"""
ret = ""
try:
uri = environ['PATH_INFO']
if uri[-1] == "/":
uri = uri[:-1]
if uri == "":
ret = str(environ)
elif uri == "/sleep":
import time
time.sleep(5)
ret = "sleep: 5 secends"
else:
ret = uri
except Exception, e:
ret = str(e)
status = '200 OK'
response_headers = [('Content-type','text/plain')]
start_response(status, response_headers)
return [ret]
if __name__ == "__main__":
#直接用python運作
#flups.WSGIServer(application, multithreaded=True, multiprocess=False, bindAddress=('127.0.0.1', 5678)).run()
#fastcgi方式運作
flups.WSGIServer(application).run()
本文轉自einyboy部落格園部落格,原文連結:http://www.cnblogs.com/einyboy/archive/2012/11/30/2796926.html,如需轉載請自行聯系原作者。