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 ...
最新文章
- Mock.js mysql_平台支持mock功能—未完成版
- js --- for in 和 for of
- 2019区块链广泛应用于能源领域 ,DMA基金会,服务于区块链产业
- c# WinForm开发 DataGridView控件的各种操作
- 【企业管理】高效会议关注点
- 计算机二级怎么测试c语言,全国计算机等级测试二级C语言视频教程(完整版).doc...
- PWN-PRACTICE-BUUCTF-25
- Ubuntu下的Linux内核的编译及安装
- 【算法笔记】:区间覆盖问题:贪心算法
- (转)向浑水(Muddy Waters Research)学习如何调查公司
- 在精简版的xp添加删除程序里面没有IIS的解决方法
- am3352 项目记录
- 三分钟搭建你的个人支付接口
- python selenium下载电子书
- 日记记事本java实训,黑马学习日记 GUI实现简单记事本功能
- 诺基亚NBU备份文件名片导出程序 vCard助手
- IE浏览器收藏夹里面的内容不显示
- linux下微信/qq的aud、silk音频文件格式与mp3格式互转,获取音频时长的方法,附问题分析和java代码。
- Word 2016 如何设置黑底白字
- mysql创建每天执行计划_mysql执行计划