使用Gunicorn部署Python Falcon Web服务器

Python中使用Gunicorn进行高效部署的配置指南 Gunicorn是一个基于Python的Web服务器,它使用预派生的子进程来处理并发请求,从而提供高性能和可靠性。它与多种框架兼容,如Django、Flask等,并且易于配置和部署。通过正确配置和使用Gunicorn,你可以轻松地在Python Web应用程序中实现高效部署。本文提供了安装、配置和启动Gunicorn的基本指南,并简要介绍了一些高级配置选项和与Nginx的集成。通过充分利用Gunicorn的功能,你可以提高应用程序的性能和可靠性,从而为用户提供更好的体验。 阅读详情

前言

python falcon是一种更接近于python wsgi的框架,它拥有比flask和Django更快的速度,更高的性能。
但缺点就是没人用、没人用和没人用,还有就是过于年轻和接近底层,许多东西都要自己写。官方文档实例不够多,社区经验相比于flask和Django 就跟程序员的头发一样稀少。当然,每个人对于’多’或’少’的感觉和定义都不一样。像在百度一搜全是你复制我,我复制你这样的经验文章也行不通。
如果你想用它开发实际项目,我劝你可以考虑跑路了 加油!
如果你想用它学习PythonWSGI和网络相关的知识,那可以一试。
本文只用了Gunicorn,适合于小型/访问量小的网站,遇到大的还是老老实实加Nginx吧。
Tag: linux systemctl service python falcon gunicorn

安装及设置

1. 安装python3及pip

请参考网络上的资源文章,用yum和源码装都无所谓,推荐python3.7

2. 安装虚拟环境

cd到你的文件目录,以下为例子

cd /var/local/Falcon

安装virtualenv(venv创建程序)

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv

创建venv

virtualenv --python=python3 venv

启用venv

source ./venv/bin/activate

本项目不需要用到设置环境变量
跳过
安装falcon和gunicorn

pip3 install falcon gunicorn

3.防火墙及安全设置

  1. Selinux设置。省事直接关闭->参考百度经验 - 如何关闭Linux里边的selinux
    当你拿工资时可不能这样直接关掉
  2. 设置防火墙。详细参考优快云 - linux防火墙查看状态及一些基本操作
# 查询80端口是否开放
firewall-cmd --query-port=80/tcp
# 开放80端口
firewall-cmd --permanent --add-port=80/tcp
# 移除端口
firewall-cmd --permanent --remove-port=8080/tcp
#重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload

编写Python 程序

1. 编写Falcon程序

Falcon是用来提供web服务的,等同于于Flask,Django等。在这里用Falcon官方文档的程序作为实例,实际中在本地开发好后直接SSH复制过来就行。
注意:这个python最好不要叫做falcon.py之类的与python类重名的
样例程序:

# /var/local/Falcon/FalconApp.py
from wsgiref.simple_server import make_server
import falcon

class ThingsResource:
    def on_get(self, req, resp):
        """Handles GET requests"""
        resp.status = falcon.HTTP_200
        resp.content_type = falcon.MEDIA_TEXT
        resp.text = ('\nTwo things awe me most, the starry sky '
                     'above me and the moral law within me.\n'
                     '\n'
                     '    ~ Immanuel Kant\n\n')

app = falcon.App()
things = ThingsResource()
app.add_route('/things', things)

if __name__ == '__main__':
    with make_server('', 8000, app) as httpd:
        print('Serving on port 8000...')
        httpd.serve_forever()

此时,运行以下代码就可以将Web简单地运行起来了,就像Flask之类的一样。

python3 FalconApp.py

运行成功后命令行会输出Serving on port 8000...,浏览器访问http://ip地址/things就可以访问到页面了(直接访问http://ip地址/(首页)是404的,因为未定义该路由)。但这样的服务在断开SSH后就无了。

2. 编写Gunicorn

Gunicorn有两种启动方式,一种是直接启动命令+参数的方式实现配置,另一种是编写配置文件。本文讲述调用配置文件启动。
创建一个gunicorn-conf.py,它的位置可以随便放置,本文放在同一级目录/var/local/Falcon/。配置文件需要以.py结尾,否则会有Warning

# gunicorn.conf

bind = "0.0.0.0:80"  #监听所有ip的80端口
workers = 4          #启用4个线程。一般workers = CPU核心数+1就比较合适
backlog = 2048
pidfile = "/var/local/Falcon/gunicorn.pid"
accesslog = "/var/local/Falcon/access.log"    #用户访问日志位置
errorlog = "/var/local/Falcon/error.log"      #程序异常日志位置
timeout = 30
debug = False
capture_output = True

所用到的日志最好先创建一个空文件

touch access.log error.log

此时,用以下代码就可以运行Gunicorn了。

gunicorn --config gunicorn-conf.py FalconApp:app

此时命令行没有输出,并且会空行,按一下ctrl+C就行了。用浏览器访问http://ip地址/things就可以看到网站了,并且断开SSH后还有,可以提供持久服务了。

编写服务程序

编写一个*.service系统服务文件。文件名可以自定义,后面在systemctl [start/stop/status] 服务名会用到,此处用falcon.service

vim /usr/lib/systemd/system/falcon.service

然后复制以下内容:

# /usr/lib/systemd/system/falcon.service
[Unit]
Description=Falcon (python WSGI)
After=network.target

[Service]
Type=forking
WorkingDirectory = /var/local/Falcon
PrivateTmp = true
Restart = on-failure
PIDFile = /var/local/Falcon/gunicorn.pid
ExecStart = /var/local/Falcon/venv/bin/gunicorn --config /var/local/Falcon/gunicorn-conf.py FalconApp:app

[Install]
WantedBy=multi-user.target

保存后刷新系统服务列表

systemctl daemon-reload

然后就可以像其他系统服务一样控制整个Web服务器的启动、关闭了。

# 启动服务
systemctl start falcon
# 关闭服务
systemctl stop falcon
# 重启服务
systemctl restart falcon
# 查看状态
systemctl status falcon -l

参考资料

优快云 - 总结python+flask项目在linux部署的五大方法
百度经验 - 如何关闭Linux里边的selinux
优快云 - linux防火墙查看状态及一些基本操作
cnblogs - flask中gunicorn的使用


看看我的.jpg

安装和配置gunicorn 并且,一个请求一个进程,并发时,显然很占CPU和内存。当请求处理时间较长时,会阻塞其他请求的处理,不适合高并发或耗时较长的请求。gevent是基于协程的并发库,可以处理更多的并发连接。异步worker,能同时处理不止一个请求,就不会出现上面同步worker那样,一个请求就把后续请求都block阻塞住的情况了。参考:https://www.cnblogs.com/shengulong/p/7202294.html。好处是,即使一个worker进程crash了,也只会影响一个请求。配置文件要是.py结尾的。 阅读详情

相关推荐

空天大模型详解

空天大模型是指面向空天信息领域(如卫星遥感、导航、气象等)设计的多模态人工智能模型,能够处理海量遥感数据、多传感器信息及跨时空分析任务。多模态融合:整合可见光、雷达、热红外、多光谱等多源遥感数据,构建统一表征空间,例如“空天·灵眸”3.0版支持航空、卫星及无人机数据的自动化解译。轻量化与高效推理:针对星载计算场景,采用分层量化、跨模态蒸馏技术压缩模型参数(如JigonGPT从1.02B压缩至0.23B,性能仅牺牲5.2%)18,并通过热传导架构提升计算速度2.4倍。神经符号结合。

zxy98的专栏 1568

falcon,一个超强的 Python 库!

Python Falcon 是一个轻量级的 Web 框架,专门设计用于构建高性能的 RESTful API。它提供了一组简单而强大的工具,使得开发者能够快速构建出性能卓越的 Web 服务。Falcon 的设计理念是尽可能地减少框架本身的开销,从而使应用程序能够获得更高的性能和更低的延迟。'}Python Falcon 是一个强大而高性能的 Web 框架,专注于提供简单和快速的方式来构建 RESTful API。通过使用 Falcon,开发者可以轻松地构建出性能优越、易用且灵活的 Web 服务。

Saki_Python的博客 1443

STM32F407通过FSMC接口与LAN9252的EtherCAT从站移植实战

本文详细介绍了在STM32F407平台上,通过FSMC接口驱动LAN9252 EtherCAT从站控制器的完整移植实战。内容涵盖硬件连接、FSMC时序配置、官方SDK代码分析与关键修改、EtherCAT协议栈集成适配,以及实战调试与稳定性优化技巧,旨在帮助工程师解决工业通信中的核心挑战,实现稳定高效的实时控制网络接入。

weixin_29268267的博客 274

Python的Falcon框架:构建轻量级高性能的API服务

Falcon框架是一个简单而高效的工具,适用于构建RESTful API。通过本篇博客的介绍,你可以开始学习和应用Falcon,轻松构建出高性能、易维护的API服务。希望这篇博客能帮助你更好地理解并使用Falcon框架。

m0_62153576的博客 1024

Ubuntu20.04下运行LOAM系列:A-LOAM、LeGO-LOAM、SC-LeGO-LOAM、LIO-SAM 和 LVI-SAM

在我第一篇博文Ubuntu 20.04配置ORB-SLAM2和ORB-SLAM3运行环境+ROS实时运行ORB-SLAM2+Gazebo仿真运行ORB-SLAM2+各种相关库的安装的基础环境下跑通A-LOAM首先已经按照上一篇文章已经安装好了ROS noetic、Eigen3.4.0、OpenCV4.2.0和PCL1.10,A-LOAM在Github的开源地址:https://github.com/HKUST-Aerial-Robotics/A-LOAM。接下来根据代码要求,需要安装Ceres,另外环境的变

zardforever123的博客 3万+

simulink的Sine Wave 模块详解

模块是 Simulink 中的一个信号源模块,用于生成正弦波信号。该模块可以根据设定的幅值、频率、相位和偏移量,在仿真过程中产生周期性的正弦波形。模块都能提供强有力的支持。通过深入了解其参数的影响及结合 MATLAB 脚本的应用,读者可以更加有效地利用这一模块进行仿真和研究。此外,通过实际应用场景的扩展以及常见问题解答部分的帮助,能够更好地掌握。模块是一个非常实用的工具,适用于需要生成正弦波信号的各种场景。模块的参数,可以进一步增强学习体验。模块参数的影响,下面我们将详细探讨每个参数如何影响仿真结果。

xiaoheshang_123的博客 1052

基于Python的RESTful API设计:使用Falcon框架

Falcon是一个低级别的Web框架,专为构建RESTful APIs设计。它的主要特点是简洁、快速和可靠。Falcon不包含复杂的ORM、表单验证等功能,而是专注于HTTP和REST。通过Falcon,我们可以更直接、更精确地控制API的行为。Falcon是一个优秀的框架,它为创建RESTful API提供了直观、灵活的工具。然而,本文只介绍了Falcon的基础知识,Falcon的功能远不止于此。如果你对Falcon感兴趣,我建议你去查阅它的官方文档,以获取更详细的信息。

小小张说故事的博客 1620

【24E】SWT6652 wifi驱动加载失败问题分析及解决方案

修改驱动配置Kconfig。是由于内存分配失败导致。

wgl307293845的博客 219

如何在Ubuntu 16.04上使用Gunicorn和Nginx部署Falcon Web应用程序

介绍 Falcon是用于构建Web应用程序的最小Python框架。它非常适合构建遵循REST架构风格的API 。它是一个低级别,高性能的框架,可以在不牺牲开发速度的情况下尽可能少地执行。 在本教程中,您将构建和部署Falcon Web应用程序。Falcon是一个WSGI框架,因此您将安装和使用Gunicorn,一个WSGI应用程序服务器来为该应用程序提供服务。然后,您将使用Nginx作为反向代...

qq_15256443的博客 720

Android 13.0 framework默认沉浸式导航栏功能实现

​ 在13.0的系统rom定制化开发中,在实现导航栏的某些定制化开发中,在某些产品需要实现沉浸式导航栏,就是需要app 能全屏显示同样也能显示导航栏,接下来就来分析下相关的功能实现 ​

安卓兼职framework和app工程师的博客 467

MTK(camera篇)Camera整体点亮

本文介绍了在MTK平台上添加新Camera Sensor的驱动开发流程。主要内容包括:1)MTK Camera采用HAL3架构,驱动层主要负责sensor电源控制和寄存器操作;2)详细说明了添加新sensor需要在多个文件中进行的修改,包括设备树配置、内核头文件、驱动列表、电源序列等;3)特别指出需要配置I2C地址表,并导入tuning文件和metadata文件以完善ISP处理流程。文章提供了完整的文件修改清单,涵盖了从内核层到HAL层的完整开发过程,为MTK平台Camera Sensor驱动开发提供了具体

weixin_49303682的博客 361

使用gunicorn部署python falcon Web服务

# 前言 python falcon是一种更接近于python wsgi的框架,它拥有比falsk和Django更快的速度,更高的性能。但缺点就是没人用,没人用和没人用。官方文档缺少实例,社区经验相比于flask和Django简直可以用“稀少”来形容。 如果你想用它开发实际项目,我劝你可以考虑跑路了。 如果你想用它学习PythonWSGI和网络相关的知识,那可以一试。 Tag: <tag>Linux systemctl service python falcon gunicorn </ta

A_Chrysand的博客 211

Android平台实现Airplay的方法及源代码

Airplay是由苹果公司推出的一项无线音视频传输技术,它允许用户将音频、视频和照片从iOS设备(如iPhone、iPad)或Mac电脑无线传输到支持Airplay的设备(如Apple TV、智能音箱等)。具体的解码和播放方式取决于你选择的库和技术。当Android设备启动AirplayService服务后,它将监听来自iOS设备的连接请求,并在建立连接后接收、解码和播放音视频数据。在AirplayService类的onStartCommand()方法中,我们需要处理Airplay的请求。

CyberLynxX的博客 1599

Falcon 开源项目教程

Falcon 开源项目教程 项目介绍 Falcon 是一个高性能的 Python Web 框架,专为构建快速、轻量级的 API 而设计。它由 falkenber9 开发并开源,旨在提供一种简单而强大的方式来处理 HTTP 请求和响应。Falcon 的设计哲学是“少即是多”,它专注于提供最基本的功能,使得开发者可以更灵活地构建自己的应用。 项目快速启动 安装 Falcon 首先,确保你已经安装了 P...

gitblog_00513的博客 936

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【python】falcon部署

1,falcon介绍     falcon是一个可靠的、高性能的Python web框架,用于构建大规模的应用程序后端和微服务。它鼓励REST架构风格,并且在保持高效的同时尽量少做事情。 ...

luolinll1212的专栏 1129

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Falcon框架快速入门指南:从基础到进阶

Falcon是一个轻量级的Python Web框架,专为构建快速的API后端服务而设计。它以高性能和简洁的API著称,非常适合需要处理高并发请求的场景。本文将带您快速了解Falcon的基本使用方法,并通过实例演示如何构建WSGI和ASGI应用。 ## 环境准备 在开始之前,请确保您已经安装了Python环境(建议3.6+版本)。Falcon支持两种接口规范: 1. WSGI(Web Serv...

gitblog_00955的博客 380

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Falcon教程

原文:http://www.jianshu.com/p/0c2535da7600# Falcon教程 Falcon Tutorial(英文链接) 1. 整体架构(The Big Picture) 架构图 2. 开始(First Steps) 在开始之前,先得保证falcon已经安装。然后创建一个新的project目录“look”,然后

Filter_CPH的博客 5142

类似gunicorn的框架有哪些

常见的类似 gunicorn 的 Python Web 服务器框架还有: uWSGI:一个功能强大的 Web 服务器,可以在各种平台上部署 Python 应用。 Waitress:一个轻量级的 WSGI 服务器,适用于小型应用。 Tornado:一个异步网络库,可以用来构建高性能的 Web 应用。 Falcon:一个快速、简单、高效的 Python Web 框架,适用于构建 RESTful AP...

weixin_35755434的博客 530

终极指南:如何用Falcon构建高性能API并与Vue.js/React.js完美集成

Falcon是一个专注于可靠性、正确性和大规模性能的Python Web数据平面API和微服务框架,为开发者提供无魔法的高效API开发体验。本文将详细介绍如何利用Falcon构建高性能API,并实现与Vue.js/React.js前端框架的无缝集成,帮助开发者打造现代化的Web应用。 [![Falcon框架标志](https://raw.gitcode.com/gh_mirrors/fa/fal

gitblog_01034的博客 334

从0到1,Python Web开发的进击之路

转载自知乎专栏 从0到1,Python Web开发的进击之路 本文将以个人(开发)的角度,讲述如何从零开始,编写、搭建和部署一个基于Python的Web应用程序。 从最简单的出发点来剖析,一个web应用后端要完成的工作抽象出来无非就是3点: 接收和解析请求。处理业务逻辑。生产和返回响应。 对于初学者来说,我们关心的只需这些步骤就够了。要检验这三个步骤,最简单的方法

李子无为的杂货铺 2003

py-frameworks-bench:Python异步Web框架性能终极对比指南

在当今高并发的Web应用开发中,选择性能优异的异步框架至关重要。**py-frameworks-bench** 是一个专门用于比较Python异步Web框架性能的基准测试项目,它通过科学的测试方法,为开发者提供了最权威的性能数据参考。无论你是初学者还是经验丰富的开发者,这份终极指南都将帮助你深入了解主流Python异步框架的性能表现,并做出明智的技术选型决策。 ## 🚀 项目简介与测试方法

gitblog_00801的博客 340

从入门到精通:使用py-frameworks-bench进行Python异步框架性能测试

想要为你的Python异步Web项目选择最合适的框架吗?🤔 在众多异步框架中选择最佳方案时,性能测试是至关重要的决策依据。本文将为你详细介绍如何使用**py-frameworks-bench**这个专业的Python异步框架性能测试工具,帮助你从入门到精通掌握性能测试技巧,为你的项目选择最佳框架提供数据支持。 ## 📊 什么是py-frameworks-bench? **py-framew

gitblog_00197的博客 977

Oxyde ORM快速上手:5分钟搭建你的第一个异步CRUD应用(安装配置完整指南)

**Oxyde ORM** 是一个类型安全、以 Pydantic 为核心的异步 ORM,内置高性能 Rust 内核,支持 PostgreSQL、SQLite 和 MySQL。它采用 Django 风格的 `Model.objects.filter()` 语法,让你用熟悉的写法完成 **异步 CRUD** 开发。本文是一份从零开始的完整安装配置指南,5 分钟带你跑通第一个异步 CRUD 应用。 #

gitblog_00815的博客 1044

Python 学习 ---> 模块、pypi ( 模块库 )、添加模块路径

什么是 模块 在 Python 中,一个.py文件就是一个模块(Module)。模块的名字就是文件的名字。在模块内部,通过全局变量__name__可以获取模块名(即字符串) 模块作用 为了实现代码的复用,通常会把一些其他程序中重用的代码拿出来单独放在一个程序文件中,

freeking101的博客 3483

一文掌握Python Falcon框架

在这一节中,我们介绍了如何安装Falcon框架、创建一个基本的应用,并进行了简单的配置。通过这些步骤,你已经掌握了Falcon安装的基础知识。接下来,我们将深入探讨Falcon的基本用法,包括路由和资源管理、请求处理及响应等内容,以帮助你更深入地理解如何构建高效的API应用。在这一节中,我们探讨了Falcon的基本用法,包括如何创建路由和资源、处理HTTP请求、响应以及中间件的使用。掌握这些基本概念后,你将能够构建功能全面且高效的RESTful API。

qq_32799165的博客 1414

Gunicorn服务器gunicorn_conf.py常用配置详解 以及 Gunicorn日志invalid HTTP method

gunicorn配置可通过gunicorn启动命令行中设定,也可通过配置文件指定。使用配置文件更加方便。不过今天在配置gunicorn_conf的日志配置时碰到了access_log_format无效,gunicorn的日志配置相关参数有4个,分别是accesslog,access_log_format,errorlog,loglevel。accesslog:访问日志路径,同nginx的access_log;accesslog = '-' # 记录到标准输出,不会输出文件。

本博客记录了从2014年以来在工作学习中遇到的技术问题、解决方法以及部分个人人生经历、经验等内容。 2314
上一篇: Python Flask框架前端js拼接url_for
下一篇: 使用gunicorn部署python falcon Web服务
A_Chrysand
博客等级 码龄6年 8粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值