Flask框架深入二
一、flask-session
from flask import Flask,session
from flask_session import RedisSessionInterface
import redis
app = Flask(__name__)
app.config['DEBUG'] = True
conn = redis.Redis()
app.session_interface = RedisSessionInterface(conn,key_prefix='zz')
@app.route('/')
def index():
session['name'] = 'zhangzhang'
return 'hello flask!'
if __name__ == '__main__':
app.run()
from flask_session import Session
app.config['SESSION_TYPE'] = 'redis'
app.config['SESSION_KEY_PREFIX'] = 'lqz'
app.config['SESSION_REDIS'] = redis.Redis()
Session(app)
@app.route('/')
def index():
session['name'] = 'lqz'
return 'hello'
if __name__ == '__main__':
app.run()
二、数据库连接池
-随着并发量的越来越大,mysql的连接数也会增大---》我们创建出连接池后,每次从池中获取连接使用,能够避免并发量过大,导致的数据库崩掉的危险
from flask import Flask, session
from dbutils.pooled_db import PooledDB
import pymysql
app = Flask(__name__)
app.config['DEBUG'] = True
POOL = PooledDB(
creator=pymysql,
maxconnections=6,
mincached=2,
maxcached=5,
maxshared=3,
blocking=True,
maxusage=None,
setsession=[],
ping=0,
host='127.0.0.1',
port=3306,
user='root',
password='786017877',
database='knowgood',
charset='utf8'
)
@app.route('/')
def index():
conn = POOL.connection()
cursor = conn.cursor()
cursor.execute('select * from applet_user')
print(cursor.fetchall())
return 'hello flask!'
if __name__ == '__main__':
app.run()
-django和flask都是同步框架
-来一个请求,开启线程执行视图函数
-异步框架:sanic,fastapi,只要被async装饰的函数,就是协程函数
@app.route("/")
async def test(request):
await cousor.excute()
return json({
"hello": "world"})
-pymysql,redis是同步框架
-不能使用在异步web框架中
-需要使用专门的异步模块
-aiomysql,aioredis,python到目前为止,没有一个比较好的异步orm框架