python supervisor flask_supervisor配合uwsgi部署flask应用

这已经是第N次来部署flask应用了, 但是每次都花了不少时间在配置上面, 这里一次性记录下, 备个忘~

写在前面

其实使用uwsgi来部署flask应用在官网上已经有较为详细的 文档 了, 推荐先读一下.

先解决一些问题:

为何使用 uwsgi 来部署应用? 方便管理; 较为常见的部署方式; 可配置性较强

为何使用 supervisor 来管理? 方便管理

下面介绍尝试用它俩部署个最简单的flask应用.

准备

首先请使用pip安装好flask, uwsgi, supervisor. 我们的小应用是这样子的:

test.py

from flask import Flask

app = Flask(__name__)

@app.route("/")

def hello():

return "Hello World!"

if __name__ == "__main__":

app.run()

配置uwsgi

uwsgi我们采用 master + 多进程 + non-daemon 方式来启动我们的应用, 对应的配置文件是像这样子的:

uwsgi.ini

[uwsgi]

http = 0.0.0.0:8080

## 指定应用目录

chdir = /path/of/test.py

## 配置下访问日志格式

log-format = '%(addr) - %(user) [%(ltime)] "%(method) %(uri) %(proto)" %(status) %(size) %(msecs)'

need-app = 1

master = 1

processes = 2

umask = 022

module = test:app

这里使用了 http , 而非 http-socket , 推荐可以阅读下uwsgi的 quickstart

编辑好配置文件后, 使用 uwsgi --ini uwsgi.ini 来看看我们应用是否ok. uwsgi的参数特别多, 推荐使用前阅读一下官方文档.

配置supervisor

使用pip安装的supervisor因为没有默认的配置文件, run起来稍微有点麻烦, 这里提供一个最最简单的可用的配置(用对应发行版的包更好):

supervisord.conf

[unix_http_server]

file = /home/of/supervisor/etc/supervisord/supervisor.sock

[supervisord]

logfile = /home/of/supervisor/etc/supervisord/log/supervisord.log

loglevel = info

pidfile = /home/of/supervisor/etc/supervisord/supervisord.pid

[supervisorctl]

serverurl = unix:///home/of/supervisor/etc/supervisord/supervisor.sock

[rpcinterface:supervisor]

supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[include]

files = /home/of/supervisor/etc/supervisord/conf/*.conf

我们把所有supervisor的信息都存放到 /home/of/supervisor 里面, 然后我们做个软链放到 /etc/supervisord.conf (默认配置文件), 避免supervisorctl启动时指定配置文件.

然后启动下supervisord, 顺便看下supervisord.log日志;)

接下来我们要做的就是把各个应用的supervisor配置放到 etc/supervisord/conf/ 下面. 简单配置下test对应的supervisor配置:

test.supervisor.conf

[program:test]

command = uwsgi --ini /path/of/test.uwsgi.conf

autorestart = true

redirect_stderr = true

stdout_logfile = /path/of/test.log

stopsignal = INT

请注意 stopsignal = INT 这个配置, 因为supervisor使用 SIGTERM 来停止应用, 而uwsgi则是接手 SIGINT 来停止的, 所以我们需要显示修正下. 更多信息请参考 这里

改完之后需要使用 supervisorctl reload 来让supervisord重新加载配置文件. 可以通过 supervisorctl status/stop/restart test 分别来 查看 , 停止 , 重启 我们的test应用.

最后

到这里整个应用就部署完毕了, 管理起来也蛮方便的. 如果有更细化的需求基本可以通过配置uwsgi和supervisor的配置来实现.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/436960.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式(五)行为型模式

前言 在上一篇结构型模式中,我们以功能为基本单位,研究了一些设计模式,用于实现功能转换、功能组合、功能封装等目的。 我们知道,面向对象编程有两个核心元素:对象、对象间通信协作。从面向对象的角度看,…

51单片机auxr寄存器_51—52系列单片机特殊功能寄存器一览表

P2.1P2.0RSTP3.0/RXDP3.1/TXDXTAL2XTAL1P3.2/INT0P3.3/INT1P3.4/T0P3.5/T1GNDVCCP1.7P1.6P1.5P1.4P1.3P1.2P1.1/AIN1P1.0/AIN0P3.7注:类似的还有Philips公司的87LPC64,20引脚8XC748/750/(751),24引脚8X749(752),28引脚8XC754&…

【转】WPF单位真的与分辨率无关吗?

转载自http://www.cnblogs.com/helloj2ee/archive/2009/04/21/1440709.htm WPF从发布之日起,一直将“分辨率无关(resolution independence)”作为其亮点,声称使用WPF制作的用户界面在轻巧的Ultra-Mobile PC的屏幕上和在50英寸的电视机上都能很好地显示。…

设计模式(六)J2EE 模式

前言 本章设计模式只挑了一些必要的加以讲解,因为有的设计模式过于简单或者根本用不到,可以不做了解。 MVC 模式 使用说明 MVC模式可以说是最有名的设计模式之一。它提出将软件的数据模型Model、视图Visual、控制器Controller三者分开封装&#xff0c…

ubuntu设置始终亮屏_ubuntu设置关闭屏幕和锁定

见链接:http://askubuntu.com/questions/177348/how-do-i-disable-the-screensaver-lockIf you want to wrap your app in a script that takes care of this for you when you launch it (or GUI simply isnt an option), the best command-line solution as of Ub…

【转】世上最简单的vue教程

一、需要了解的基本知识 node.js Node.js是一个Javascript运行环境(runtime),发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。Node.js对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境…

工程师学乐理(一)尝试理解音乐

前言 很早就接触了乐理,但是一直没有学懂,越学问题越多。个人感觉,其中很大的原因是有关教材写得看不懂,用未知的东西描述未知的东西,不知所云。前几年还买了一把吉他,买了课程,断断续续学了几…

【转】Vue.js入门教程(一)从静态页面到前后端分离开发

第一章:基础知识 我能看懂吗? 只要你现在能用htmlcssjs制作一个静态页面,相信我,你100%可以读懂这篇文章。 本文尤其适合那些想要了解前后端分离开发技术,或者刚刚脱离传统MVC开发模式的前端人员。 回想一下&#xf…

vuebaidumap 删除覆盖物_VUE BAIDU MAP覆盖物 - 自定义覆盖物手记

前言覆盖物的最高级就是自定义覆盖物,而往往业务中就必须用自定义覆盖物,因为都用上了地图这么吊的组件了,覆盖物也必须华丽、高度定制。官网Github自定义覆盖物手册效果效果核心其实是三角箭头的阴影,其他都很好说。说起三角的阴…

工程师学乐理(二)音阶及倾向性

前言 阅读本文前,请先阅读《写给理工科人看的乐理》。 本文主要讲音阶。在其他地方能查到的细节,我们这里就不会多说了。本文重点在于梳理音阶背后的逻辑,尝试把技术点串起来讲。 没有逻辑的东西是咱们工程师比较讨厌的,任何大自…

【转】VS工具:实时可视化树

VisuaStudio号称全宇宙最强大的IDE。在VS2015版本中,微软又给广大开发者带来了一个强大的工具:实时可视化树(Live Visual Tree,以下简称可视树)。其实树可视化工具并不是新鲜的东西,在WPF的时候就有了,只是这次微软集成…

cad2014点击工具栏闪退_cad2012闪退,点工具栏闪退但用快捷键画图不闪退

2017-08-10 回答cad快捷键l直线;pl多段线;u回车ctrlz后退;d修改,调整;rec矩形;c圆;tr修剪;o偏移;xl放射线;x分解;co复制;m移动&#x…

工程师学乐理(三)音程调式与和弦

前言 阅读本文前,请先阅读《写给理工科人看的乐理》。 上一篇我们讲了音阶及其倾向性,主要是为了领悟其中的逻辑与原理,限于篇幅,只是点到为止,没有展开讲解。本篇我们将更加深入地去研究音阶间的关系,即…

【转】WPF 入门《常用控件》

1.GroupBox 注意: GroupBox仍然需要布局容器来放置元素。如: StackPanel面板 1 2 3 4 5 6 7 <GroupBox Header"select number?"> <StackPanel> <RadioButton>one</RadioButton> <RadioButton>two</…

python输入直角三角形a、b、输出斜边c_编写一个程序,输入直角三角形两条直角边a和b的长度,利用勾股定理计算斜边c的长度。要求结果保留2位...

你好&#xff0c;我们采用C的计算机语言&#xff0c;让用户输入两条边长&#xff0c;计算出第三边长度&#xff0c;并控制两位小数点输出。以下是程序&#xff1b;#include #include #include using namespace std;int main(){double a, b, c;cout << "请输入边长a;…

代码生成工具 AutoCode For XML发布

AutoCode For XML 介绍 软件名称&#xff1a;XML设计及解析代码生成工具软件。 此软件用于辅助程序开发人员进行图形化XML设计&#xff0c;并提供针对目标编程语言&#xff0c;自动生成XML解析代码的功能&#xff0c;实现设计即编码&#xff0c;减轻开发者负担。 很多实际项…

【转】wpf从我炫系列1----布局控件的使用(上)

今天我来给大家讲解在学习WPF过程中使用布局控件的一些心得&#xff0c;主要给大家介绍一下一个控件的用法。希望对大家学习Wpf有所帮助. 1. StackPanel栈面板 2. WrapPanel环绕面板 3. DockPanel停靠面板 4. Grid网格 5. UniformGrid均布网…

idea中project sdk_一文秒懂IDEA中每天都在用的Project Structure知识

Idea这款开发工具的便利之一是很多配置项几乎可直接使用默认项。但针对不同的项目难免需要针对性的配置&#xff0c;本文带大家详细的梳理一遍Project Structure中各项功能&#xff0c;注意收藏&#xff0c;以备不时之需。先说一下写本文的缘由&#xff0c;在项目中用Idea中打开…

【开源项目】EasyCmd命令图形化软件

EasyCmd 项目地址&#xff1a;https://gitee.com/showmework/EasyCmd 最新版本&#xff1a;v0.2预览版 介绍 命令行图形化。 让命令行更易于使用&#xff0c;从命令行复杂的参数及语法中解放出来。 设计思想 软件设计思想并不是构建用户界面&#xff0c;现代操作系统已经…

php在线读取pdf文件大小_PDF转WORD在线转换器哪家强?

无论是工作还是日常生活中&#xff0c;经常需要将pdf转换成word文档进行编辑&#xff0c;我想大部分人一定是和我一样&#xff0c;首先会去找度娘帮忙&#xff0c;百度一下“pdf转word”出现了很多在线转换器&#xff0c;比如大家常用的讯捷、smallpdf等&#xff0c;然后立马进…