架构
1. uwsgi gevent django
example https://ivan-site.com/2012/10/gevent-gunicorn-vs-uwsgi/
http://django-china.cn/topic/101/
http://developer.51cto.com/art/201010/229615_all.htm
http://developer.51cto.com/art/201010/229615_all.htm
UWSGI VS. GUNICORN, OR HOW TO MAKE PYTHON GO FASTER THAN NODE
http://blog.kgriffs.com/2012/12/18/uwsgi-vs-gunicorn-vs-node-benchmarks.html
http://co-ding.com/?p=356
command line: uwsgi --gevent 100 --gevent-monkey-patch --http :9090 -M --processes 4 --wsgi-file wsgi.py
--gevent参数后面的100, 制定了最大spawn 100个协程,这样我们的理论并发数可以达到 100*4。
使用了参数 --gevent-monkey-patch 让我们连最后需要修改代码的地方都没有了:它将自动调用monkey.patch_all()打补丁。
这样,我们就一句代码都没有修改,就使程序转换为异步的程序,大大提高并发数。与提高线程数相比,大大减少了线程切换的开销(协程之间切换的代价很低)。
2. supervisor manage command
3. 用gunicorn和gevent提高python web框架的性能
http://xiaorui.cc/2014/11/22/%E7%94%A8gunicorn%E5%92%8Cgevent%E6%8F%90%E9%AB%98python-web%E6%A1%86%E6%9E%B6%E7%9A%84%E6%80%A7%E8%83%BD/
4.monkey patch 猴子补丁 用来在运行时动态修改已有的代码,而不需要修改原始代码。