开源模块之uwsgi多功能测试客户端

快过年了,也没什么心思工作了,上面也没安排什么繁重的工作了。 现在有大把的时间干自己喜欢的事情,一直都想下功夫看看uwsgi server的实现源码及uwsgi的协议。以前总是根据喜好挑着代码片段看,不系统。

先前遇到过python gunicorn 和 uwsgi 在不同io模型下性能差异问题,导致了下面这些一系列的Q&A , 还好通过这么几天的分析代码和测试知道是怎么一回事了。

gunicorn 默认是select模型, 如何改成epoll模型 ?
gunicorn 长连接实现方法
uwsgi http模式为什么会listen两组端口
unix domain socket 性能真的好么? 
在uwsgi里出现502\504根本原因?
故意传递一个不完整的http请求?
listen fd被所有worker accept么?
等等...


这个关于python uwsgi的章节有点多,所以打算扔到后面去讲解,这么好的话题,咱们可不能这么草率就对付了,要好好从uwsgi源码层面捕捉一些问题.


该文章写的有些乱,欢迎来喷 ! 另外文章后续不断更新中,请到原文地址查看更新.   http://xiaorui.cc/?p=4205 

那么本章的内容是什么?   正如标题那样,自己开发设计一个uwsgi的测试客户端,那么为什么要设计一个uwsgi的客户端呢?  uwsgi 还需要客户端么?   为什么是多功能呢?   疑问是不是多了不少。


我们知道uwsgi 和 gunicorn 实现的功能很类似,单说服务模式方面, gunicorn只有http模式,而uwsgi server有多个服务模式,它有http、tcp socket、unix domain socket 。 如果是http模式,那没得讲,直接用curl都可以访问的。 如果uwsgi切换到 tcp socket、unix domain socket模式,因为他们跑的协议是uWsgi protocol ,又因为他们有 unix domain socket (unix域套接字),这时候你用curl肯定是玩不转的,那么如何? 所以我定制一个uwsgi客户端来兼容这三个模式…


其实uwsgi的客户端不是必需品的, 我们以往测试uwsgi server,都是在nginx配置uwsgi_proxy代理后,再进行下一步测试。


一句话,为了方便测试uwsgi server 而开发的客户端.   代码倒是没什么难度,只是uwsgi protocol协议有点苦涩难懂,所以借助于nginx的uwsgi_proxy来一路抓包和strace分析….  这过程也是醉了….  


github 地址:  (记得给我这个github项目点star

https://github.com/rfyiamcool/uwsgi_cli


项目名, uwsgi_cli :

一些俗气的安装使用介绍.  

安装方法:

pip install uwsgi_cli

if not found uwsgi_cli bin, please set PATH . ( /usr/local/bin/ )

http mode

uwsgi_cli http 127.0.0.1:5000 /blog

unix socket mode

uwsgi_cli unix /tmp/xiaorui.sock /


tcp socket mode

uwsgi_cli tcp 127.0.0.1:5000 /mp/article

POST 模式

uwsgi_cli tcp 127.0.0.1:5000 /cool/fetch "url=xiaorui.cc&name=fengyun"



END.


大家觉得文章对你有些作用! 如果想赏钱,可以用微信扫描下面的二维码,感谢!
另外再次标注博客原地址  xiaorui.cc

发表评论

邮箱地址不会被公开。 必填项已用*标注