博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nginx+python的搭建方法--uwsgi (继续进阶)
阅读量:6408 次
发布时间:2019-06-23

本文共 2420 字,大约阅读时间需要 8 分钟。

hot3.png

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 sysdef 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 bufdef 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,jsondef 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

你可能感兴趣的文章
职业生涯上的点点滴滴
查看>>
Linux下添加新硬盘,分区及挂载
查看>>
一起来将vscode变成私人定制笔记本
查看>>
Flutter 云音乐
查看>>
RecyclerView实现多type页面
查看>>
个人的web商城网站
查看>>
debian fcitx
查看>>
排中律与实无穷问题的性质分析
查看>>
08/23 学习总结
查看>>
物理层
查看>>
linux多网卡路由设置
查看>>
八大监听器
查看>>
self.navigationController退出到指定页面,或者一次性pop出n个页面
查看>>
Quartz实现数据库动态配置定时任务
查看>>
iptables 端口转发以及双向通信
查看>>
备战一线互联网公司Java工程师面试题 (1)
查看>>
ThinkPHP中自动验证失败
查看>>
jquery图片切换插件jquery.cycle.js参数详解
查看>>
JavaScript push() 方法
查看>>
Map集合
查看>>