nginx+fastcgi+flup+python(转)

转自:https://blog.csdn.net/linvo/article/details/5870498

网上更多文章是用Django、webpy等框架的前提下,由于我只是用其CGI而不是搞纯web开发,所以暂时不打算用这类框架,直接用flup包(其实大多数框架WSGI也是封装的flup)。

废话不多说,进入正题,先看下需要的环境和工具:

1、Linux2.6(废话- -!)

2、Nginx(需包含fastcgi模块)

3、Spawn-fcgi (官方下载:http://redmine.lighttpd.net/projects/spawn-fcgi/wiki

4、Python

5、flup(官方下载:http://trac.saddi.com/flup

安装都是些常规方法,就不一一介绍了

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这里了,贴个简单测试代码

 


   
   
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import flup.server.fcgi as flups
  4. def application(environ, start_response):
  5. """该函数可以写成模块import导入"""
  6. ret = ""
  7. try:
  8. uri = environ[ 'PATH_INFO']
  9. if uri[ -1] == "/":
  10. uri = uri[: -1]
  11. if uri == "":
  12. ret = str(environ)
  13. elif uri == "/sleep":
  14. import time
  15. time.sleep( 5)
  16. ret = "sleep: 5 secends"
  17. else:
  18. ret = uri
  19. except Exception, e:
  20. ret = str(e)
  21. status = '200 OK'
  22. response_headers = [( 'Content-type', 'text/plain')]
  23. start_response(status, response_headers)
  24. return [ret]
  25. if __name__ == "__main__":
  26. #直接用python运行
  27. #flups.WSGIServer(application, multithreaded=True, multiprocess=False, bindAddress=('127.0.0.1', 5678)).run()
  28. #fastcgi方式运行
  29. flups.WSGIServer(application).run()

厄,就到这里吧~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值