#第一步还是把app.py改成manage.py
#create_app是需要从__init__.py里面导入,需要先创建,后期创建也没问题。最重要的是理解思想
from flask_script import Manager

from app import create_app

app = create_app()

manage = Manager(app)

if __name__ == '__main__':
   manage.run()

# 并发  :如果某个系统支持两个或者多个动作(Action)同时存在,那么这个系统就是一个并发系统
#  并行  :如果某个系统支持两个或者多个动作同时执行,那么这个系统就是一个并行系统。
# 你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,
# 这就说明你不支持并发也不支持并行。
# 你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。
# 你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。

#  同步 :是所有的操作都做完,才返回给用户结果。即写完数据库之后,在相应用户,用户体验不好。
#  异步 :不用等所有操作等做完,就相应用户请求。即先相应用户请求,然后慢慢去写数据库,用户体验较好。
# 异步实例:
#
# 为了避免短时间大量的数据库操作,就使用缓存机制,也就是消息队列。
# 先将数据放入消息队列,然后再慢慢写入数据库。

# 异步实例:
#
# 为了避免短时间大量的数据库操作,就使用缓存机制,也就是消息队列。
# 先将数据放入消息队列,然后再慢慢写入数据库。
#  进程 :具有一定独立功能的程序、它是系统进行资源分配和调度的一个独立单位,
# 重点在系统调度和单独的单位,
# 也就是说进程是可以独 立运行的一段程序。
#  线程:线程进程的一个实体,是CPU调度和分派的基本单位,他是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源。
# 在运行时,只是暂用一些计数器、寄存器和栈 。
#创建__init__.py
from flask import Flask
from flask_session import Session

from app.views import blue

#创建或注册app
def create_app():
    app=Flask(__name__)
    app.register_blueprint(blueprint=blue)#加载蓝图
    app.config['SESSION_TYPE']='redis'# 使用redis的时候  记得下载驱动
    app.config['SECRET_KEY']='123'
    sess=Session()
    sess.init_app(app)
    return app

  

#创建views.py文件
from flask import Blueprint, request, render_template, redirect, url_for, session

blue=Blueprint('first',__name__)
@blue.route('/')
def hello_world():
    return 'Hello World!'


#登录
@blue.route('/login/')
def login():
    temp=render_template('login.html')#渲染模板
    return temp



@blue.route('/dologin/',methods=['POST','GET'])
def dologin():
    username=request.form.get('username')
    resp=redirect(url_for('first.index'))
    # resp.set_cookie('username',username)#设置cookie的键和值
    session['username']=username#设置session的键和值
    return resp


@blue.route('/index/')
def index():
    # username=request.cookies.get('username')#从存储器cookie里面提取用户名
    username = session.get('username')
    temp=render_template('index.html',username=username)

    return temp


@blue.route('/loginout/')
def loginout():
    resp = redirect(url_for('first.index'))
    # resp.delete_cookie('username')
    session.pop('username')
    return resp



@blue.route('/getbase/')
def getbase():
    temp = render_template('base_main.html')
    return temp

 

创建base.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>绿野仙踪</title>
</head>
<body>
{% block header %}
<h2>花开堪折直须折,莫等花开堪折直</h2>
{% endblock %}
{% block body %}

{% endblock %}

{% block footer %}

{% endblock %}
</body>
</html>

  

创建nihao.html
<h2>人生若只如初见,但愿相看两不厌!</h2>

  

创建index.html
欢迎{{ username }}
<a href="{{ url_for('first.loginout') }}">退出</a>

  

创建login.html
<form action="{{ url_for('first.dologin')}}" method="post">

    <input type="text" name="username" placeholder="请输入用户名">
    <input type="submit" name="提交">

</form>

  

创建base_main.html
{% extends 'base.html' %}

{% block footer %}
{{ super() }}
    <h2> 问世间情为何物,直教人生死相许</h2>
{% endblock %}

{% include 'nihao.html' %}

  python manage.py runserver -d -r 后面的-d -r 主要是打开调试模式

python中flask如何并发上千个请求 flask 并行_flask

 

python中flask如何并发上千个请求 flask 并行_flask_02