nginx+python的搭建方法--uwsgi (继续进阶)

nginx+uwsgi 安装
-------------------------
1.编译
到这里下载  http://projects.unbit.it/downloads/

-------以0.9.6.8版本为例 
tar xzvf uwsgi-0.9.6.8.tar.gz  
cd uwsgi-0.9.6.8  
make  
cp uwsgi /usr/bin

2.配置nginx转发规则
在nginx配置文件的server段中,加上配置

# 把所有请求都重定向给uwsgi处理  
location / {    
  include uwsgi_params    
  uwsgi_pass 127.0.0.1:9090    
}

# 将指定的url重定向个uwsg的 
location ^~ /your_dir/your_cgi {  
  include uwsgi_params    
  uwsgi_pass 127.0.0.1:9090    
}

3.运行uwsgi

执行
uwsgi -s :9090 -w your_app_file


-------------------------示例的内容可以是:
#!/usr/bin/python 
#hello.py 

import web 

urls = ( 
    '/(.*)', 'hello' 
) 
app = web.application(urls, globals()) 
class hello: 
    def GET(self, name): 
        if not name: 
            name = 'World' 
        return 'Hello, ' + name + '!' 

application = app.wsgifunc()
nginx配置
location ^~ /eventlet/cgi { 
                include uwsgi_params; 
                uwsgi_pass 127.0.0.1:9090; 
            }
nginx重启

启动:
uwsgi --socket myapp.cgi -s :9090   --w myapp.cgi

访问:

curl http://localhost/eventlet/myapp

------------------ 获取请求中的数据

import sys

def read_obj(env): 
    if 'wsgi.input' in env: 
        return env['wsgi.input'] 
    else: 
        return sys.stdin

#获取HTTP POST数据
def get_http_post_data(env):
     content_length = int(env['CONTENT_LENGTH'])
     buf = read_obj(env).read(content_length)  #buf就是post的参数,当然还是个字符串
     return buf


#获取HTTP GET数据
def get_http_get_data(env):
     buf = env['QUERY_STRING']
     return buf

def application(env, start_response):
    start_response('200 OK',[('Content-Type','text/html')])
    
    http_post_data = get_http_post_data(env)
    http_get_data = get_http_get_data(env)
  
    return '' #这个示例不在乎返回信息


----------------------------进一步

返回格式化的数据示例:

import sys,json

def read_obj(env): 
    if 'wsgi.input' in env: 
        return env['wsgi.input'] 
    else: 
        return sys.stdin

#获取HTTP POST数据
def get_http_post_data(env):
     content_length = int(env['CONTENT_LENGTH'])
     buf = read_obj(env).read(content_length)  #buf就是post的参数,当然还是个字符串
     return buf

#获取HTTP GET数据
def get_http_get_data(env):
     buf = env['QUERY_STRING']
     return buf
    

def application(env, start_response):
    start_response('200 OK',[('Content-Type','text/html')])
    
    http_post_data = get_http_post_data(env)
    http_get_data = get_http_get_data(env)
  
    #返回格式化数据,json很好用:-)
    reply_json = {'code':0,'msg':'this is a demo return str'}
    return json.dumps(reply_json)



转载于:https://my.oschina.net/kakablue/blog/189207

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值