文章目录

  • 前言
    • 一、通过设置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 处理高并发、多线程相关推荐

  1. Flask处理高并发

    Flask处理高并发 1.通过设置app.run()的参数,来达到多线程的效果,具体参数: 1.threaded : 多线程支持,默认为False,即不开启多线程; app.run(threaded= ...

  2. 推测的删除锁(Speculative Lock Elision):实现高并发多线程执行

    背景 SLE全称Speculative Lock Elision,我称之为推测的删除锁.这是一篇关于SLE的论文翻译,但是因为本人英语功底很差,所以翻译的不通顺而且会有很多错误的地方.之所以把它发出来 ...

  3. 高并发多线程分片断点下载

    基于Java的高并发多线程分片断点下载 首先直接看测试情况: 单线程下载72MB文件 7线程并发分片下载72MB文件: 下载效率提高2-3倍,当然以上测试结果还和设备CPU核心数.网络带宽息息相关. ...

  4. java 多进程写一个文件_java高并发多线程及多进程同时写入文件研究

    测试&思考: 环境:windows 七.linux centos 6.三.java8html java多线程同时写一个文件 java高并发环境下多线程同时写入一个文件时, 经过 FileLoc ...

  5. 面试高薪程序员之高频面试题(一),集合,JVM,高并发多线程等

    一,java集合类 Java集合比如说HashMap和ConcurrentHashMap,HashMap底层实现原理?HashMap加载因子为什么是0.75?HashMap扩容操作可能会出现的问题?H ...

  6. 多线程与高并发 笔记,非面向初学者 二:java引用,高并发多线程容器,线程池

    网页右边,向下滑有目录索引,可以根据标题跳转到你想看的内容 如果右边没有就找找左边 上一节:JUC锁,一些面试题和源码讲解 1.引用 java引用共4种,强软弱虚 强引用:我们普通的new一个对象,就 ...

  7. Java高并发多线程

    并发和多线程(线程池.SYNC和Lock锁机制.线程通信.volatile.ThreadLocal.CyclicBarrier.Atom包.CountDownLatch.AQS.CAS原理等等) 1. ...

  8. java高并发多线程及多进程同时写入文件研究

    文章目录 测试&思考: java多线程同时写一个文件 第一种情况是:一个线程A有对文件加锁,另一个线程B没对文件加锁 在windows7环境下:(持有锁的可以写文件成功). 在linux ce ...

  9. ArrayList问题之高并发多线程环境下会出现内部成员会出现null

    问题描述 最近在做飞机大战游戏,发现一个问题,就是游戏运行了一定时间后会停止,同时eclipse会报出空指针异常. 为此,我针对性地在 遍历list列表并取出列表元素 的for循环中输出每个对象,发现 ...

最新文章

  1. 黑客教父龚蔚演讲:钓鱼WiFi 也能照用不误
  2. 农村初中学校计算机课的意义,关于农村学校计算机课件使用的反思.pdf
  3. gan简介_GAN简介
  4. js函数提示 vscode_为VSCode / Monaco Intellisence添加JavaScript类型提示
  5. wince导航_宁可用手机导航,也不用汽车导航?
  6. linux设置环境变量_什么是linux环境变量
  7. 英特尔推出第二代神经拟态研究芯片Loihi 2和全新Lava软件框架
  8. C++继承机制(二)——继承中的构造和析构顺序、继承同名成员的处理方式
  9. Linux学习笔记:CentOS6关闭IPv6
  10. python3.6安装pip3_python3.6如何安装pip
  11. 牛客网 牛客小白月赛2 H.武-最短路(Dijkstra)
  12. UGUI的Button和Toggle
  13. JanusGraph批量导入数据优化
  14. selenium超详解
  15. matlab数值微积分与方程数值求解,六、数值微积分与方程求解(MATLAB学习笔记)
  16. 音质好的linux主机,实测:ASIO 的音质更好?
  17. 型机器人同人本子_唯美的人×机器人漫画《純情愛玩生化女友》
  18. 「抖音同款播放器」上市:卡顿、黑屏和模糊,这些技术来解决
  19. 少有人走的路:心智成熟的旅程
  20. 2015iMAC安装macOS/Win11双系统 外置硬盘安装macOS/Win11双系统(非PE非DP虚拟机非WTG)

热门文章

  1. Flink checkpoint机制
  2. 基于javaWeb的毕业生论文管理系统——计算机毕业设计
  3. centos bcompare
  4. CSI Interference Measurement
  5. linux下阻塞的系统调用,Linux下socket设置为非阻塞方式和fcntl系统调用.pdf
  6. xynuoj 均分纸牌问题 酒馆浪人的博客
  7. 商业数据分析只选FineBI
  8. UE4如何将虚幻商城资源导入到自己的工程中+保管库的使用
  9. Linux 发行版新秀!风格对比苹果
  10. 第二章 Visual Studio开发环境的安装、配置