第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

tornado 異步阻塞問題

tornado 異步阻塞問題

幕布斯7119047 2018-10-10 13:39:50
import os import time import tornado.webfrom tornado import gen from . import BaseHandlerclass RegisterHandler(BaseHandler):    def get(self):        self.render_html('register.html')    @tornado.web.asynchronous    @gen.coroutine    def post(self):        username = self.get_argument('username', None)        email = self.get_argument('email', None)        password = self.get_argument('password')        data = {'username': username, 'email': email, 'password': password,                 'timestamp': time.time()}        if username and email:            time.sleep(10)                yield self.db.user.insert(data)        self.redirect('/')class LoginHandler(BaseHandler):    def get(self):        self.render_html('login.html')我在注冊的時候用time.sleep(10)阻塞了10秒, 按理說我通過異步的方式在這段阻塞的時間內(nèi)是可以通過,瀏覽器訪問我的login頁面,但卻同樣被阻塞了。怎么解決這個問題還是我的代碼有問題?
查看完整描述

2 回答

?
心有法竹

TA貢獻1866條經(jīng)驗 獲得超5個贊

因為tornado是單線程的,你sleep了10秒,當然會把你的頁面阻塞掉。
gen.sleep才是你要的

查看完整回答
反對 回復 2018-10-28
?
吃雞游戲

TA貢獻1829條經(jīng)驗 獲得超7個贊

題主對異步的理解有偏差。

目測你是像模擬注冊寫數(shù)據(jù)的時候10s耗時間的操作。這個過程是異步的,不會影響tornaod處理別的請求。

問題在于 time.sleep這個模擬不正確,這句代碼的含義就是整個 tornado 服務(單進程單線程)sleep,10s.
10s之后再接著處理請求。

另外,tornado yeild 這種是協(xié)程,是指多個并發(fā)請求的時候,其中一個耗時的請求不會阻塞其他的請求。不是只單個請求馬上返回,使用callback的方式可以單個請求馬上返回。


查看完整回答
反對 回復 2018-10-28
  • 2 回答
  • 0 關注
  • 905 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號