前几天有个问题,就是要在 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 干嘛?
求打醒
1
Kilerd 2017-05-20 12:48:35 +08:00 via iPhone 4
不,让你睡着多好。活在自己的梦里,美滋滋。
看你发帖,内容里面的语气,不想解释你的问题 |
2
D3EP 2017-05-20 13:30:16 +08:00 via Android
开发环境 Django 是多线程的。Google 一下就出来了(我都没用过 Django )
|
3
Muninn 2017-05-20 15:00:35 +08:00
。。。
|
4
Morriaty 2017-05-22 10:37:30 +08:00
太多人像你一样以为用了 tornado 就是异步了。。。。。
|
5
prasanta 2017-05-22 18:03:54 +08:00
快醒醒
|
7
huanglongtiankon 2017-05-23 08:45:59 +08:00
你是不是傻,web 框架的请求当然是多线程的啊,不然多人同时访问网站岂不是得一个个等?
|
8
r0okit 2017-05-23 15:29:02 +08:00
首先你的态度和你的基础一样, 然后我敢肯定你在 tornado 里是用的 time.sleep,其次 tornado ,Django, celery, redis 这些我恐怕你只是看过,最多就是敲了两行 demo
|
9
wingyiu 2017-05-27 23:51:25 +08:00
google: tornado 如何正确 sleep
|
10
ysymi 2017-05-31 19:09:40 +08:00
貌似大家都喜欢谦逊低调又厉害的人
|