Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PyCon2014China-Zhuhai-jeff
Search
Zoom.Quiet
November 17, 2014
Technology
0
110
PyCon2014China-Zhuhai-jeff
141115 in Zhuhai
http://zoomq.qiniudn.com/CPyUG/PyCon2014China/141115zh-pm8-jeff.MP3
Zoom.Quiet
November 17, 2014
Tweet
Share
More Decks by Zoom.Quiet
See All by Zoom.Quiet
PyCon2014China-Zhuhai-high performance
zoomquiet
0
180
PyCon2014China-Zhuhai-meta programming
zoomquiet
1
160
PyCon2014China-Zhuhai-bpm.py
zoomquiet
0
130
PyCon2014China-Zhuhai-luna kv db
zoomquiet
0
110
PyCon2014China-Zhuhai-seed studio
zoomquiet
0
120
PyCon2014China-Zhuhai-Docker Registry Build By Python
zoomquiet
0
140
PyCon2014China-Zhuhai-pythonic front-end
zoomquiet
0
140
DevFest2014-Zhuhai-Polymer
zoomquiet
0
440
TEDxJLUZH MOMENT future
zoomquiet
0
400
Other Decks in Technology
See All in Technology
Scrum Fest Morioka 2026
kawaguti
PRO
2
610
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
43k
生成AI活用によるPRレビュー改善の歩み
lycorptech_jp
PRO
4
1.1k
あすけん_Developers_Summit_2026_-_Vibe_Coding起点での新機能開発で__あすけん_が乗り越えた壁.pdf
iwahiro
0
740
「OSアップデート:年に一度の「大仕事」を乗り切るQA戦略」_Mobile Tech Flex 〜4社合同!私たちのモバイル開発自慢大会〜
gu3
0
220
Claude Codeはレガシー移行でどこまで使えるのか?
ak2ie
0
790
AWS Bedrock Guardrails / 機密情報の入力・出力をブロックする — Blocking Sensitive Information Input/Output
kazuhitonakayama
2
170
AWSが推進するAI駆動開発ライフサイクル入門 〜 AI駆動開発時代に必要な人材とは 〜/ introduction_to_aidlc_and_skills
fatsushi
7
4.7k
20260222ねこIoTLT ねこIoTLTをふりかえる
poropinai1966
0
200
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
94k
教育現場のプロンプトエンジニアリング問題を 解決するAIエージェントを作成してみた
ryoshun
0
120
AI活用を"目的"にしたら、データの本質が見えてきた - Snowflake Intelligence実験記 / chasing-ai-finding-data
pei0804
0
520
Featured
See All Featured
A better future with KSS
kneath
240
18k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
72k
The Language of Interfaces
destraynor
162
26k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.7k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
250
It's Worth the Effort
3n
188
29k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
[SF Ruby Conf 2025] Rails X
palkan
2
790
WENDY [Excerpt]
tessaabrams
9
36k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Transcript
None
万万没想到之: Python Web异步编程记
[email protected]
本栏⺫⽬目由“珠三⾓角技术沙⻰龙”赞助播出 蕉爷,你姓蕉吗? Yeah!爷姓蕉!
本栏⺫⽬目由“⾳音乐说”赞助播出 觉得我好听就闪聊⼀一下呗
本栏⺫⽬目由“萌叔漫玩”赞助播出 ⼩小妹妹,你看⼤大叔萌萌哒,有⽊木有
@jeff_kit @姐夫 前珠三⾓角技术沙⻰龙⾸首席组委 Toraysoft co-founder Toraysoft ⾸首席码农
举个栗⼦子开始 = / A ? / 0 0 / 2
听题:写⼀一个搜索歌曲的接⼝口
Django ⼀一下 uwsgi --http :8000 --module pyconf2014.wsgi --processes 1
ab之 500秒!
改进#1 uwsgi --http :8000 --module pyconf2014.wsgi --processes 10
再ab之 50秒!
嗯!启动100条进程就 可以了!
问题在哪? • 同步⺴⽹网络请求耗时⻓长,前⾯面的请求导致后续的请求阻 塞。 • 最⼤大进程数就是最⼤大并发数。 • 消耗巨⼤大的服务器资源。 • 请求队列爆掉,如同被DDOS!
异步解决⽅方案 • ⾮非阻塞IO + 异步调度 • select,epoll,kqueue
说⼈人话 • web服务器请求第三⽅方服务的时候,交出控制权,返 回去受理新的⽤用户请求。 • 第三⽅方服务有返回的时候,通知web服务器进程,把 结果返回给⽤用户。
? / I A= K / 0 02 / 0
02 A= K
异步web框架哪家强? • 没有异步web框架,wsgi是同步标准。 • 那是web server的事⼉儿。
异步webserver哪家强? • twisted,超重量级。略。 • Tornado,既是server,也是framework。 • Gevent兼容的uwsgi Contailer,uWsgi,Gunicron。
Tornado
作为Server python run_tornado.py
ab⼀一下 5秒!
回调?⽆无爱!耶!yield!
优点 • 单线程,⾼高并发 • 低能耗,⾼高效率
可惜 • 回调模型⽆无爱 • yield伪同步模式⼊入侵性太强 (第三⽅方sdk要重新实 现) • server与框架耦合度太⾼高,⼊入侵性太强+1, 不能使⽤用
熟悉的框架作业。 • 作为wsgi server,未能发挥其优势
Gevent! • Greenlet • libEvent • monkey_patch()!
认识Gevent
Gevent能 • 让你按原来的⽅方式写代码。 • 让同步编写的代码,异步地执⾏行。 • 让单线程也并发,且⽐比多线程更⾼高效环保。 • 让原⽣生的thread变成green thread。
Gevent + wsgi • uWsgi
uWsgi • 修改处理器的类型即可 processes => gevent • patch all:— gevent-monkey-patch
代码,还是原来的味 uwsgi --http :8000 --module pyconf2014.wsgi --gevent 100 --gevent-monkey-patch
再ab⼀一下 5秒!
但,uWsgi + Django的泪 • uWsgi的对thread的patch有问题 • 如果django的view有访问数据库,则数据库连接⾮非 线程(协程)安全。 • databasewrapper
objects created in a thread can only be used in that same thread。
Gunicron + Django • Gunicron,patch完美 • 但,使⽤用Django数据库连接池需谨慎!⾼高并发导致 占⽤用⼤大量的数据库连接。
万万没想到 python web异步化,配个参数就完了
谢谢