0
TWSGI 实现技术分享 Echo 2011/02/25
About me <ul><li>PYTHON 爱好者 (~5 年) </li></ul><ul><li>开源爱好者,喜欢用开源技术解决问题 </li></ul><ul><li>Qq 微博  -  http://t.qq.com/dotecho...
Kqueue 简介 <ul><li>介绍 </li></ul><ul><li>常用的 FILTER EVFILTER_READ/EVFILTER_WRITE/TIMER etc... </li></ul><ul><li>Python kqueu...
Kqueue 示例 <ul><li>test_kqueue.py </li></ul><ul><li>from select import kqueue, kevent kevent(sock, select.KQ_FILTER_READ, s...
Select  示例 <ul><li>test_select.py </li></ul><ul><li>r, w, e = select.select([s], [], []) </li></ul>
WSGI <ul><li>什么是 wsgi 解决 webserver 与 application 的局限 </li></ul><ul><li>Application app(environ, start_response) </li></ul>...
TWSGI -  流程( 1 )
TWSGI -  流程 2 <ul><li>Prefork </li></ul>
TWSGI(1) -  进程模式 <ul><li>单进程模式 实现简单 / 无进程控制开销 / 易首攻击 </li></ul><ul><li>多进程并发模式 fork 比较耗 cpu 时间 / 子进程过多会耗尽资源 </li></ul><ul>...
TWSGI(2) -  堵塞与非堵塞 <ul><li>堵塞调用 所有 connect/accept/send/recv 发起后等待完成才能返回 -  默认这种方式 </li></ul><ul><li>非堵塞调用 发起后立即返回 结合 selec...
TWSGI(3) - FCGI 请求响应处理过程 <ul><li>BEGIN_REQUEST </li></ul><ul><li>PARAMS </li></ul><ul><li>STDIN(if POST) </li></ul><ul><li...
TWSGI(4) - 目录模块结构 <ul><li>buffer.py event.py preforkserver.py unpack.py   fcgi __init__.py fcgi_base.py fcgi_fork.py http ...
TWSGI(4) - 目录模块结构 <ul><li>buffer.py  处理 I/O 数据 ,  缓存 event.py  封装事件 ,  提供事件注册回调方法 preforkserver.py  进程管理 /fork/ 回收 / 重生 un...
Q & A
THANKS!
Upcoming SlideShare
Loading in...5
×

Twsgi

397

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
397
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Twsgi "

  1. 1. TWSGI 实现技术分享 Echo 2011/02/25
  2. 2. About me <ul><li>PYTHON 爱好者 (~5 年) </li></ul><ul><li>开源爱好者,喜欢用开源技术解决问题 </li></ul><ul><li>Qq 微博 - http://t.qq.com/dotecho </li></ul><ul><li>Weibo - http://weibo.com/dotecho </li></ul>
  3. 3. Kqueue 简介 <ul><li>介绍 </li></ul><ul><li>常用的 FILTER EVFILTER_READ/EVFILTER_WRITE/TIMER etc... </li></ul><ul><li>Python kqueue http://docs.python.org/library/select.html </li></ul><ul><li>kqueue 示例 </li></ul><ul><li>Kqueue VS select 轮询 vs 回调 </li></ul><ul><li>select 示例 </li></ul>
  4. 4. Kqueue 示例 <ul><li>test_kqueue.py </li></ul><ul><li>from select import kqueue, kevent kevent(sock, select.KQ_FILTER_READ, select.KQ_EV_ADD) kq.control([ev], 0) kq.control(None, 10) </li></ul>
  5. 5. Select 示例 <ul><li>test_select.py </li></ul><ul><li>r, w, e = select.select([s], [], []) </li></ul>
  6. 6. WSGI <ul><li>什么是 wsgi 解决 webserver 与 application 的局限 </li></ul><ul><li>Application app(environ, start_response) </li></ul><ul><li>Wsgi Server start_response(status, headers) write(data) </li></ul>
  7. 7. TWSGI - 流程( 1 )
  8. 8. TWSGI - 流程 2 <ul><li>Prefork </li></ul>
  9. 9. TWSGI(1) - 进程模式 <ul><li>单进程模式 实现简单 / 无进程控制开销 / 易首攻击 </li></ul><ul><li>多进程并发模式 fork 比较耗 cpu 时间 / 子进程过多会耗尽资源 </li></ul><ul><li>Prefork 模式 固定进程数量 / </li></ul>
  10. 10. TWSGI(2) - 堵塞与非堵塞 <ul><li>堵塞调用 所有 connect/accept/send/recv 发起后等待完成才能返回 - 默认这种方式 </li></ul><ul><li>非堵塞调用 发起后立即返回 结合 select/kqueue 一起使用 sock.setblocking(0) </li></ul>
  11. 11. TWSGI(3) - FCGI 请求响应处理过程 <ul><li>BEGIN_REQUEST </li></ul><ul><li>PARAMS </li></ul><ul><li>STDIN(if POST) </li></ul><ul><li>END_REQUEST </li></ul>
  12. 12. TWSGI(4) - 目录模块结构 <ul><li>buffer.py event.py preforkserver.py unpack.py fcgi __init__.py fcgi_base.py fcgi_fork.py http uwsgi </li></ul>
  13. 13. TWSGI(4) - 目录模块结构 <ul><li>buffer.py 处理 I/O 数据 , 缓存 event.py 封装事件 , 提供事件注册回调方法 preforkserver.py 进程管理 /fork/ 回收 / 重生 unpack.py 提供友好的 kqueue 事件描述 fcgi __init__.py fcgi_base.py fastcgi 报文解析 / 处理 http 的请求及响应 fcgi_fork.py &quot;main&quot; 函数 , 启动服务 , 传递外部可选的 environ 对象 http uwsgi </li></ul>
  14. 14. Q & A
  15. 15. THANKS!
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×