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.防火墙及安全设置
firewall-cmd --query-port=80/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --remove-port=8080/tcp
firewall-cmd --reload
1. 编写Falcon程序
Falcon是用来提供web服务的,等同于于Flask,Django等。在这里用Falcon官方文档的程序作为实例,实际中在本地开发好后直接SSH复制过来就行。
注意:这个python最好不要叫做falcon.py之类的与python类重名的
样例程序:
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
bind = "0.0.0.0:80"
workers = 4
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
然后复制以下内容:
[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
Original: https://blog.csdn.net/A_Chrysand/article/details/122945677
Author: A_Chrysand
Title: 使用Gunicorn部署Python Falcon Web服务器
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/737660/
转载文章受原作者版权保护。转载请注明原作者出处!