Flask 处理高并发、多线程
文章目录
- 前言
- 一、通过设置app.run()的参数,来达到多线程的效果,具体参数:
- 二、使用genvent做协程,解决高并发:
- 三、通过Guicorn(with genvent)的形式来对app进行包装,来启动服务;
- 总结
前言
使用flask做服务时,可以使用python run.py的方式运行,但是这样不能用于生产环境,可能会出现连接无响应的情况。后来通过查找资料,发现flask服务处理多线程、高并发的一下方法,主要有一下几个方面:
一、通过设置app.run()的参数,来达到多线程的效果,具体参数:
# 1.threaded : 多线程支持,默认为False,即不开启多线程;
app.run(threaded=True)
# 2.processes:进程数量,默认为1.
app.run(processes=True)
ps:多进程或多线程只能选择一个,不能同时开启
二、使用genvent做协程,解决高并发:
from genvent.wsgi import WSGIServer
from genvent import monkeymonkey.patch_all()
app = Flask(__name__)
app.config.from_object(config)
api = Api(app)db = DBInfo()
# db_old = DBInfo_old()
然后通过这种方式包装WSGIServer((address,port), app).serve_forever()
通过python code.py 的方法,来启动服务
三、通过Guicorn(with genvent)的形式来对app进行包装,来启动服务;
通过一下代码,来启动项目
# 启动命令
gunicorn -c gun.py thread_explore:app
其中gun.py是gunicorn的配置文件
thread_explore是服务的主程序
app是flask的app
gun.py的具体内容:
import os
import gevent.monkey
gevent.monkey.patch_all()
import multiprocessing# 服务地址(adderes:port)
bind = 127.0.0.1;5000
# 启动进程数量
workers = multiprocessing.cpu_count() * 2 +1
worker_class = 'gevent'
threads = 20
preload_app = True
reload = True
x_forwarded_for_header = 'X_FORWARDED-FOR'
总结
Flask 处理高并发、多线程相关推荐
- Flask处理高并发
Flask处理高并发 1.通过设置app.run()的参数,来达到多线程的效果,具体参数: 1.threaded : 多线程支持,默认为False,即不开启多线程; app.run(threaded= ...
- 推测的删除锁(Speculative Lock Elision):实现高并发多线程执行
背景 SLE全称Speculative Lock Elision,我称之为推测的删除锁.这是一篇关于SLE的论文翻译,但是因为本人英语功底很差,所以翻译的不通顺而且会有很多错误的地方.之所以把它发出来 ...
- 高并发多线程分片断点下载
基于Java的高并发多线程分片断点下载 首先直接看测试情况: 单线程下载72MB文件 7线程并发分片下载72MB文件: 下载效率提高2-3倍,当然以上测试结果还和设备CPU核心数.网络带宽息息相关. ...
- java 多进程写一个文件_java高并发多线程及多进程同时写入文件研究
测试&思考: 环境:windows 七.linux centos 6.三.java8html java多线程同时写一个文件 java高并发环境下多线程同时写入一个文件时, 经过 FileLoc ...
- 面试高薪程序员之高频面试题(一),集合,JVM,高并发多线程等
一,java集合类 Java集合比如说HashMap和ConcurrentHashMap,HashMap底层实现原理?HashMap加载因子为什么是0.75?HashMap扩容操作可能会出现的问题?H ...
- 多线程与高并发 笔记,非面向初学者 二:java引用,高并发多线程容器,线程池
网页右边,向下滑有目录索引,可以根据标题跳转到你想看的内容 如果右边没有就找找左边 上一节:JUC锁,一些面试题和源码讲解 1.引用 java引用共4种,强软弱虚 强引用:我们普通的new一个对象,就 ...
- Java高并发多线程
并发和多线程(线程池.SYNC和Lock锁机制.线程通信.volatile.ThreadLocal.CyclicBarrier.Atom包.CountDownLatch.AQS.CAS原理等等) 1. ...
- java高并发多线程及多进程同时写入文件研究
文章目录 测试&思考: java多线程同时写一个文件 第一种情况是:一个线程A有对文件加锁,另一个线程B没对文件加锁 在windows7环境下:(持有锁的可以写文件成功). 在linux ce ...
- ArrayList问题之高并发多线程环境下会出现内部成员会出现null
问题描述 最近在做飞机大战游戏,发现一个问题,就是游戏运行了一定时间后会停止,同时eclipse会报出空指针异常. 为此,我针对性地在 遍历list列表并取出列表元素 的for循环中输出每个对象,发现 ...
最新文章
- 黑客教父龚蔚演讲:钓鱼WiFi 也能照用不误
- 农村初中学校计算机课的意义,关于农村学校计算机课件使用的反思.pdf
- gan简介_GAN简介
- js函数提示 vscode_为VSCode / Monaco Intellisence添加JavaScript类型提示
- wince导航_宁可用手机导航,也不用汽车导航?
- linux设置环境变量_什么是linux环境变量
- 英特尔推出第二代神经拟态研究芯片Loihi 2和全新Lava软件框架
- C++继承机制(二)——继承中的构造和析构顺序、继承同名成员的处理方式
- Linux学习笔记:CentOS6关闭IPv6
- python3.6安装pip3_python3.6如何安装pip
- 牛客网 牛客小白月赛2 H.武-最短路(Dijkstra)
- UGUI的Button和Toggle
- JanusGraph批量导入数据优化
- selenium超详解
- matlab数值微积分与方程数值求解,六、数值微积分与方程求解(MATLAB学习笔记)
- 音质好的linux主机,实测:ASIO 的音质更好?
- 型机器人同人本子_唯美的人×机器人漫画《純情愛玩生化女友》
- 「抖音同款播放器」上市:卡顿、黑屏和模糊,这些技术来解决
- 少有人走的路:心智成熟的旅程
- 2015iMAC安装macOS/Win11双系统 外置硬盘安装macOS/Win11双系统(非PE非DP虚拟机非WTG)