Tornado 是“一个用 Python 编写的相对简单、非阻塞的 Web 服务器框架”——可以解释一下这意味着什么吗?

发布于 2024-08-05 05:10:25 字数 265 浏览 6 评论 0原文

这可能是一个愚蠢的问题,但是“非阻塞 Web 服务器”到底是什么?所有网络服务器在技术上都是非阻塞的,不是吗?否则他们如何处理同时连接? Apache2 使用 fork() 和 pthread 的组合来实现这一点。 Tornado(以及 Twisted)究竟有何不同?他们是否只是将一堆套接字设置为非阻塞模式,构建一个 FD 列表(或等效列表),然后使用一个大的 select() 系统调用循环它?

您会在哪里使用这样的框架?与 Apache2(或其他流行的服务器)相比,它们能给您带来哪些优势?谢谢

This is probably a stupid question, but what exactly is a "non-blocking web server"? All web servers are technically non-blocking, arent they? otherwise how could they handle simultaneous connections? Apache2 achieves this using a combination of fork() and pthreads. How exactly are Tornado (and Twisted also) different? Do they just set a bunch of sockets to non-bocking mode, build an FD list (or equivalent), and then loop over that with one big select() sys call?

Where would you use a framework like these, and what advantages can they give you over Apache2 (or other popular servers)? Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无人问我粥可暖 2024-08-12 05:10:25

这篇关于 EventMachine 的文章也可能给出给你一个提示:

秉承分叉传统/
我发现自己的线程网络服务器
当我加入其中之一时感到非常惊讶
大学的研究项目
几年前的滑铁卢:我们
正在对不同的网络服务器进行基准测试
架构,表现最好的是
所有事件驱动的服务器。

当我向大家提出问题时,
我很快就意识到了原因——在
数十万的环境
请求第二个、分叉和上下文
与线程相关的切换
管理变得令人望而却步
昂贵(fork 表现最差,因为
它在父级上进行内存复制
每次都会处理)。而通过
比较,紧密且高度
优化的事件循环确实很出色
当谈到性能时
重负载。

This article on EventMachine may also give you a hint:

Steeped in the tradition of forking /
threaded web-servers I found myself
rather surprised when I joined one of
the research projects at University of
Waterloo a couple of years back: we
were benchmarking different web-server
architectures, and top performers were
all event-driven servers.

As I pestered everyone with questions,
I quickly realized why - in an
environment with hundreds of thousands
requests a second, forking and context
switching associated with thread
management become prohibitively
expensive (fork is worst performer, as
it does a memory copy on the parent
process every time). Whereas by
comparison, a tight and highly
optimized event-loop really shines
when it comes to performance under
heavy loads.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文