python-flask-uwsgi体验
request -> response
uwsgi 可以粗略的理解为tomcat吧
pip install flask
学习目标
json APi
数据库CRUD
redis缓存
全局的异常处理
flask + gunicorn
$ gunicorn -w 4 myapp:app
flask + uwsgi 部署
uwsgi --http 0.0.0.0:8000 --wsgi-file flask_uwsgi.py --callable app --master
flask_uwsgi.py
from app import appif __name__ == "__main__":app.run()
app.py
from flask import Flaskapp = Flask(__name__)@app.route('/')
def hello_world():return 'Hello World!'if __name__ == '__main__':app.run()
学习flask
我确实是从spring来考虑flask的,比如某个功能在spring中是存在的,那么flask要怎么实现呢?
- 第一步创建一个flask应用
from flask import Flask
app = Flask(__name__)
if __name__ == "__main__"app.run()
- 路由配置规则
获取url中的值
获取参数中的值
指定方法 - 模版渲染
- 在request之前和之后before_request/ after_request
很像spring里面的拦截器,比如可以在这里进行登录验证 - http状态相关
redirect
abort - 一些自己可以丰富的功能
To register an error handler, use the errorhandler() decorator.
7.The Application Context
flask 背后的故事
访问不同视图处理函数和多个用户访问同一个视图处理函数,faslk对应方式有变化吗?
flask 不同view函数的handler1, handler2使用request
可以参考理解java里面的threadLocal
Python中获得Thread Local的两种方法
「第一种方法」
使用Python自带的threading.local线程局部变量。
问题:它只支持在线程之间作为局部变量
「第二种方法」
使用Werkzeug实现的werkzeug.local.Local类,它的优势在于支持在协程之间作为局部变量。他会优先使用Greenlet的ID而不是现成的ID来保存状态词典。
简单的翻看flask代码,初步的认识是flask是一层包装,在她之下是werkzeug, jinja2
app.run() 在这里是简单的调用了werkzeug的run_simple(), 而run_simple使用的是socket.listen(128)
流程
http -> wsgi server -> application
application模型如下
def application(environ, start_response):start_response('200 OK', [('Content-Type', 'text/plain')])return ['Hello World!']
- wsgi server这里是怎么处理多个请求的?多进程?多线程?单进程,单线程,异步io
def run_simple(hostname, port, application, use_reloader=False,use_debugger=False, use_evalex=True,extra_files=None, reloader_interval=1,reloader_type='auto', threaded=False,processes=1, request_handler=None, static_files=None,passthrough_errors=False, ssl_context=None):
可以通过os.getpid()查看进程id
注意 debugger为False时候, threaded=True才生效
run_simple(‘127.0.0.1’, 5000, app, use_debugger=False, use_reloader=True, processes=1, threaded=True)
通过threading.currentThread().ident查看线程id
2. from flask import request,这里的request在不同线程中为什么不会相互干扰?
python-flask-uwsgi体验相关推荐
- uwsgi+python+flask+nginx服务器部署
flask+uwsgi+nginx 服务器 安装centos7系统 1. 系统选择CentOS系统就好(推荐选择CentOS7系统) 2. 用户名:root 3. 密码自己设定(自己记住) 安装宝塔面 ...
- python flask实战订餐系统微信小程序-60nginx + uwsgi 实现多进程访问
python flask实战订餐系统微信小程序-60nginx + uwsgi 实现多进程访问 B站配套视频教程观看 uwsgi多进程配置 uwsgi.ini配置 nginx和uwsgi通过配置文件s ...
- 树莓派构建内网域名访问php/python 多个虚拟web主机 bind9 nginx flask uwsgi pfm php7 python3
文章目录 0 前言 1 php安装 2 nginx安装 3 python3安装 4 php web设置与测试 5 flask uwsgi 设置与测试 5.1 安装flask 5.2 安装uwsgi 5 ...
- python flask快速入门与进阶 百度云_Python Flask快速入门与进阶
课程目录 1-1 Python Flask快速入门与进阶.mp4 2-1 windows环境安装开发环境 (上).mp4 2-2 windows环境安装开发环境 (下).mp4 2-3 配置开发环境. ...
- python flask实现博客系统_基于Flask的博客网站设计与实现
涂远杰 郑剑 摘要:该博客系统是一款分享型博客,注重个人的学习心得.生活等方面的记录.后台基于Python中的Flask框架开发,还涉及爬虫,数据库使用的是轻型的SQLite,同时,前端页面的实现涉及 ...
- python开源项目博客_Blog_mini首页、文档和下载 - Python Flask开源博客 - OSCHINA - 中文开源技术交流社区...
使用Blog_mini,你完全不用担心博客的管理问题! Blog_mini是一个用Python Flask开发的,拥有简洁页面(支持响应式布局!)和强大后台管理功能的开源博客系统,使用Blog_min ...
- Build Docker image of a Python Flask app【转载】
原文地址:https://stackoverflow.com/questions/41750366/build-docker-image-of-a-python-flask-app I'm tryin ...
- python flask安装_python flask安装和命令详解
Flask Web开发实战学习笔记 Flask简介 Flask是使用Python编写的Web微框架.Web框架可以让我们不用关 心底层的请求响应处理,更方便高效地编写Web程序.因为Flask核心简 ...
- python自动化测试平台github_GitHub - DangKaio/FXTest: 接口自动化测试平台——python+flask版,支持http协议...
FXTest测试平台 flask + Python3 实现的API自动化测试平台. 下面有介绍python flask部署相关的文章链接.为自己部署的记录文章 前后端开始进行分离,通过接口进行交互 敬 ...
- Flask+uwsgi+Nginx环境搭建
2019独角兽企业重金招聘Python工程师标准>>> 开源软件准备 需要的软件列表: setuptools-33.1.1.zip Python-2.7.13.tgz pip-9.0 ...
最新文章
- rocksdb报错解决:librocksdb.a(format.o): In function `Zlib_Uncompress':
- 报名丨24小时创新挑战:数字时代的人类健康与福祉
- python字符串之查找与替换_Python字符串操作(查找,替换,分割和连接)方法及其使用...
- ITK:读取网格并显示2个给定顶点之间的欧几里得距离
- 队列的定义与操作-顺序存储,链式存储(C语言)
- 备份下ionic升级
- 余额宝技术架构及演进
- not1,not2,bind1st,bind2nd
- md5是什么_全民小视频视频修改md5有什么用6
- 2017CV技术报告:从3D物体重建到人体姿态估计
- 怎么把video文件改成mp4_怎么将MP4视频转换成EXE格式?
- hardware用u盘起动_u盘启动dos最简单的的小方法
- Educational Codeforces Round 61 (Rated for Div. 2) D. Stressful Training(贪心+二分+优先队列)
- 双排桩弯矩Matlab求解程序,考虑开挖过程椅式双排桩内力及变形分析
- 【GAMES101】课堂笔记1--计算机图形学概述
- 珍藏的PS技巧(可以尝试一下哦)(转载)
- Spring中Autowired注解到底怎么实现的
- 大场景室内点云标注数据集S3DIS介绍
- 2018年常见的13种APP推广方法 最后一种运营者必看
- 抽象类或接口的实例化问题