Flask实现异步服务器

  • Post author:
  • Post category:其他


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()



版权声明:本文为a294233897原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。