你知道 Django 是异步的 Web 框架吗?

2017-05-20 12:43:58 +08:00
 ansheng

前几天有个问题,就是要在 View 里面调用短信 API,刚开始想,要调短信的 API 就需要用到异步请求了,要不然就会阻塞,因为测试就去调用短信 API 感觉不太好,于是乎就写了两个 View,一个 sleep10 秒一个 sleep5 秒,先访问 10 秒的在访问 5 秒的,最后就呵呵呵呵了,5 秒的先返回,过了 5 秒返回 10 秒的 Vie,总耗时 10 秒。

艹,为什么会这样?马上 pip 一个 tornado,同样两个 View 一个 sleep5 秒一个 sleep10 秒,然后同时访问,结果就是 10 秒之后返回第一个请求,5 秒之后返回第二个请求,总耗时 15 秒。

在我的理解总,Web 框架都是单进程单线程的,默认应该是同步的,为什么 Django 是异步的?如果是这样,那么那些用 redis+celery 来处理异步任务的不是脑袋都进水了?

结论就是 Django 就是异步的框架,那还要 Tornado 干嘛?

求打醒

3197 次点击
所在节点    Python
10 条回复
Kilerd
2017-05-20 12:48:35 +08:00
不,让你睡着多好。活在自己的梦里,美滋滋。

看你发帖,内容里面的语气,不想解释你的问题
D3EP
2017-05-20 13:30:16 +08:00
开发环境 Django 是多线程的。Google 一下就出来了(我都没用过 Django )
Muninn
2017-05-20 15:00:35 +08:00
。。。
Morriaty
2017-05-22 10:37:30 +08:00
太多人像你一样以为用了 tornado 就是异步了。。。。。
prasanta
2017-05-22 18:03:54 +08:00
快醒醒
ytmsdy
2017-05-22 18:52:25 +08:00
@Kilerd 同意!
huanglongtiankon
2017-05-23 08:45:59 +08:00
你是不是傻,web 框架的请求当然是多线程的啊,不然多人同时访问网站岂不是得一个个等?
r0okit
2017-05-23 15:29:02 +08:00
首先你的态度和你的基础一样, 然后我敢肯定你在 tornado 里是用的 time.sleep,其次 tornado ,Django, celery, redis 这些我恐怕你只是看过,最多就是敲了两行 demo
wingyiu
2017-05-27 23:51:25 +08:00
google: tornado 如何正确 sleep
ysymi
2017-05-31 19:09:40 +08:00
貌似大家都喜欢谦逊低调又厉害的人

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/362621

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX