python同时发大量请求_python http服务器,多个同时请求
我開發了一個使用龍卷風用
python編寫的相當廣泛的htt??p服務器.如果沒有設置任何特殊內容,服務器將阻止請求,并且一次只能處理一個.請求基本上訪問數據(mysql / redis)并在json中打印出來.在最壞的情況下,這些請求可能需要一秒鐘的時間.問題是請求進來需要很長時間(3s),然后一個簡單的請求立即進入,需要5ms處理.好吧,因為第一個請求將需要3秒,第二個請求在第一個請求完成之前不會啟動.因此第二個請求需要處理> 3s.
我怎樣才能讓這種情況變得更好?無論其他請求如何,我都需要第二個簡單的請求才能開始執行.我是python的新手,對apache / php更有經驗,其中沒有兩個單獨請求相互阻塞的概念.我已經調查了mod_python以模擬php示例,但這似乎也阻止了.我可以更改龍卷風服務器以獲得我想要的功能嗎?我讀到的每個地方都說龍卷風非常適合處理多個同時發出的請求.
這是我正在使用的演示代碼.我有一個睡眠命令,我用它來測試并發是否有效.睡覺是一種測試并發性的公平方法嗎?
import tornado.httpserver
import tornado.ioloop
import tornado.web
import tornado.gen
import time
class MainHandler(tornado.web.RequestHandler):
@tornado.web.asynchronous
@tornado.gen.engine
def handlePing1(self):
time.sleep(4)#simulating an expensive mysql call
self.write("response to browser ....")
self.finish()
def get(self):
start = time.time()
self.handlePing1()
#response = yield gen.Task(handlePing1)#i see tutorials around that suggest using something like this ....
print "done with request ...", self.request.path, round((time.time()-start),3)
application = tornado.web.Application([
(r"/.*", MainHandler),
])
if __name__ == "__main__":
http_server = tornado.httpserver.HTTPServer(application)
port=8833;
http_server.listen(port)
print "listening on "+str(port);
tornado.ioloop.IOLoop.instance().start()
謝謝你的幫助!
總結
以上是生活随笔為你收集整理的python同时发大量请求_python http服务器,多个同时请求的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: webpack打包后引用cdn的js_呕
- 下一篇: ironpython使用opencv_连