Flask的服務, 預設是同步的, 是以以下代碼, 在接收多個請求是會發生阻塞的, 導緻打開頁面變得很慢, 很卡:
# -*- coding: utf-8 -*-
from flask import Flask
import requests
import random
from datetime import datetime
app = Flask(__name__)
urls = ['https://www.python.org/','https://www.yahoo.com/','https://github.com/']
@app.route('/')
def index():
time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
respond = requests.get(urls[int(random.random()*3)]).content.decode()
print(time+' -- '+ str(len(respond)))
return datetime.now().strftime("%Y-%m-%d %H:%M:%S --")+ str(len(respond))
app.run('127.0.0.1',5000)
比較簡便的實作異步的方式就是借助第三方庫: gevent
# -*- coding: utf-8 -*-
from gevent import monkey
from gevent import pywsgi
monkey.patch_all()
from flask import Flask
import requests
import random
from datetime import datetime
app = Flask(__name__)
urls = ['https://www.python.org/','https://www.yahoo.com/','https://github.com/']
@app.route('/')
def index():
time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
respond = requests.get(urls[int(random.random()*3)]).content.decode()
print(time+' -- '+ str(len(respond)))
return datetime.now().strftime("%Y-%m-%d %H:%M:%S --")+ str(len(respond))
server = pywsgi.WSGIServer(('127.0.0.1', 5000), app)
server.serve_forever()