网站首页 > 技术文章 正文
引言
进入TIOBE的官网,查看2021年04月份最新的编程语言排行榜,Python仍处于探花的位置,但与状元C语言和榜眼Java语言的差距越来越小。这是我刚刚从TIOBE官网的截图:
从用户使用率来看,C语言和Java语言一年来处于下滑趋势,而Python语言却处于上升趋势,根据这个趋势,乐观地估计,半年之内,Python语言可能会成为第二流行的计算机语言。
可是,不知道大家有没有和我相同的感受:Python语言很棒,但是优秀的参考书籍太少了!
这段时间,我用Python语言开发了一个比较大的服务器软件,开发过程中吃尽了苦头。因此,我决定,将这段时间开发程序时的框架总结出来,分享给大家。
本文使用的开发工具是PyCharm,Python程序运行的操作系统环境是Ubuntu 16.04.7 LTS。
1、建立工程
新建一个目录MyServer,作为我们要开发的服务器软件的工程目录:
启动PyCharm,点击Open按钮,然后选择我们新建的目录:
此时,我们就建立了一个干净的Python工程,里面没有任何我们不想要的文件:
2、建立requirements.txt文件
requirements.txt文件类似于Java Maven中的pom.xml文件,用于指出Python工程依赖的库,我们还可以给出依赖库的版本号。
requirements.txt文件是纯文本文件,如果我们的软件需要支持Web功能,需要使用MySQL数据库存储数据,需要使用MQTT协议与外界通信,则requirements.txt文件可以这样写:
Flask==1.1.2
Flask-Script==2.0.6
PyMySQL==0.10.0
Flask-MQTT==1.1.1
paho-mqtt==1.5.0
Werkzeug==1.0.1
在一个新的环境下第一次运行Python程序前,需要使用pip命令,传入requirements.txt参数,下载依赖的库,命令如下:
#pip3 install -r requirements.txt
这是我执行pip命令的截图:
3、建立app包
在工程目录下,建立app包,作为自己开发业务功能的存放位置。
建立app包后,Python的工程视图如下:
4、在app包中建立自己需要的模块或子包
为了简单,这里就只建立一个RestDealer模块,RestDealer.py文件的功能是支持用户通过网页访问,RestDealer.py文件的内容如下:
from flask import Flask
def create_app():
app = Flask(__name__)
@app.route('/')
def index():
return "hello, welcome!"
return app
现在Python工程的视图如下:
5、在工程根目录下建立manage模块
manage模块为Python程序的入口模块,manage.py程序的内容如下:
from app.RestDealer import create_app
from flask_script import Manager, Server
app = create_app()
manager = Manager(app)
server = Server(host="0.0.0.0", port=9090)
manager.add_command("runserver", server)
if __name__ == '__main__':
manager.run()
入口程序的功能是,启动HTTP服务器,监听9090端口,并让app成为处理HTTP请求的对象。现在Python工程的视图如下:
6、运行程序
将工程的所有代码拷贝到Ubuntu执行环境,然后执行python命令,启动我们编写的Python程序。这是执行的命令:
#python3 manage.py runserver
这是程序启动情况的截图:
程序启动后,我们可以通过浏览器访问,这是截图:
我们的Python程序也会动态输出收到的HTTP请求:
7、后记
这篇文章,原来拟定的题目是“如何开发大型服务器程序”,也准备好了一个包括HTTP功能、MySQL访问功能、MQTT通信功能的示例程序。但刚写一点点,发现这样的程序,让文章读起来味同嚼蜡,因此缩减成现在的样子。
谢谢阅读!
推荐一本Python书籍,下班回家后翻上两页,是一种享受:
猜你喜欢
- 2024-10-03 Python访问网络 urllib.request 发送HTTP 请求
- 2024-10-03 python模块之aioHttp 异步请求(在crm中,哪个模块用于跟踪和管理客户服务请求)
- 2024-10-03 推荐几个最佳python应用服务器(一起学习吧)
- 2024-10-03 让 HTTP 服务人类——Python Requests 模块基本用法总结
- 2024-10-03 关于爬虫,HTTP协议了解一下!(关于爬虫,http协议了解一下!正确的有)
- 2024-10-03 「Python」在HTTP请求使用长连接(keep-alive)提高传输效率
- 2024-10-03 干货分享丨Python的HTTP库及示例(http//www.python.org/downloads)
- 2024-10-03 微软太良心了,提供免费服务器可以搭建Python网站
- 2024-10-03 python爬虫必备库——requests(python爬虫需要的库)
- 2024-10-03 使用Python获取HTTP请求头数据(在python中用于获取用户输入的函数是)
- 10-02基于深度学习的铸件缺陷检测_如何控制和检测铸件缺陷?有缺陷铸件如何处置?
- 10-02Linux Mint 22.1 Cinnamon Edition 搭建深度学习环境
- 10-02AWD-LSTM语言模型是如何实现的_lstm语言模型
- 10-02NVIDIA Jetson Nano 2GB 系列文章(53):TAO模型训练工具简介
- 10-02使用ONNX和Torchscript加快推理速度的测试
- 10-02tensorflow GPU环境安装踩坑日记_tensorflow配置gpu环境
- 10-02Keye-VL-1.5-8B 快手 Keye-VL— 腾讯云两卡 32GB GPU保姆级部署指南
- 10-02Gateway_gateways
- 最近发表
-
- 基于深度学习的铸件缺陷检测_如何控制和检测铸件缺陷?有缺陷铸件如何处置?
- Linux Mint 22.1 Cinnamon Edition 搭建深度学习环境
- AWD-LSTM语言模型是如何实现的_lstm语言模型
- NVIDIA Jetson Nano 2GB 系列文章(53):TAO模型训练工具简介
- 使用ONNX和Torchscript加快推理速度的测试
- tensorflow GPU环境安装踩坑日记_tensorflow配置gpu环境
- Keye-VL-1.5-8B 快手 Keye-VL— 腾讯云两卡 32GB GPU保姆级部署指南
- Gateway_gateways
- Coze开源本地部署教程_开源canopen
- 扣子开源本地部署教程 丨Coze智能体小白喂饭级指南
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (87)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)