大家好,我是水滴~~
本文将介绍了使用的知识点、以及利用 Flask 框架提供从 ECS 中下载和删除的文件接口代码、并对该代码进行详细解析、最后给出部署方案,希望能对你有所帮助!
在上一篇文章中,我们将文件下载到了ECS中。这篇文章是我们继续讲解第三步:提供一个从ECS中下载和删除文件的接口。
base64
是 Python 标准库中的一个模块,提供了对 Base64 编码和解码的功能。Base64 是一种将二进制数据转换为 ASCII 字符串的编码方式,常用于在文本协议中传输二进制数据或存储二进制数据到文本文件中。
更多介绍参见:《Base64 编码和解码(base64 模块)》
os 是 Python 标准库中的一个模块,提供了与操作系统交互的功能。通过 os 模块,您可以执行各种与文件系统、进程管理、环境变量等相关的操作。
更多介绍参见:《os 模块》
Flask是一个轻量级的Python Web开发框架,它简单而灵活,适合构建小型到中型的Web应用程序。Flask提供了必要的工具和库,帮助开发者快速搭建Web应用,并具备扩展性,可以根据需求添加各种插件和扩展。
在使用前需要先安装该库,下面是安装命令:
pip install flask
PyInstaller 是一个用于将 Python 应用程序打包成独立可执行文件的工具。它可以将 Python 代码及其依赖项(包括解释器)打包成单个可执行文件,这样用户可以在没有安装 Python 解释器或依赖项的情况下运行你的应用程序。你可以使用 PyInstaller 来创建跨平台的可执行文件,支持 Windows、macOS 和 Linux 等操作系统。
在使用前需要先安装该库,下面是安装命令:
pip install pyinstaller
下面代码使用了 flask
第三方库,所以要提前安装它们,下面是安装指令:
pip install flask
在项目中创建一个第三步:提供一个从ECS中下载和删除文件的接口.py
Python文件,下面是完整代码:
import base64
import os
from flask import Flask
from flask import send_from_directory
app = Flask(__name__)
# 文件ECS存储路径
file_path = "/data/app/oss_download/file_list/"
# 下载文件
@app.get('/download/<filename>')
def download(filename):
key = base64.b64decode(filename.encode()).decode()
print("下载:" + key)
return send_from_directory(file_path, key)
# 删除文件
@app.get('/delete/<filename>')
def delete(filename):
try:
key = base64.b64decode(filename.encode()).decode()
print("删除:" + key)
os.remove(file_path + key)
except Exception as e:
print(str(e))
return 'error'
return 'ok'
if __name__ == '__main__':
app.run(port=8080)
download
方法利用 Flask 框架,提供了下载文件的路由,通过请求该路由可以将ECS中的文本下载到本地。filename
为key
的base64字符串,所以需要转码才能得到原始的key
,
delete
方法利用 Flask 框架,提供了删除文件的路由,通过请求该路由可以将ECS中的文件删除。如果删除成功,则返回ok
;如何有异常导致删除失败,则返回error
。
在main
主方法中,用于运行 Flask,绑定端口为8080,如果想绑定主机可指定host
参数。该端口还要提供外网映射,以便本地计算机能够连通。
requirements.txt
是一个常用的文本文件,用于列出项目所需的所有依赖项及其版本信息。它通常用于 Python 项目,但也可以在其他项目中使用。
在项目中执行下面命令,可以列出依赖项:
pip freeze > requirements.txt
这将输出当前环境中所有安装的包及其版本信息,并将其写入requirements.txt
文件中。
在 Linux 服务器的项目根目录下,可以运行以下命令来安装requirements.txt
中列出的所有依赖项:
pip install -r requirements.txt
这将安装所列出的所有依赖项及其指定的版本。
将 第三步:提供一个从ECS中下载和删除文件的接口.py
Python文件拷贝到 Linux 服务器项目根目录下,执行下面命令即可运行该 Python 文件:
python 第三步:提供一个从ECS中下载和删除文件的接口.py
如果想要后台运行,并且将print
输出到指定的日志文件中,可以使用以下命令:
nohup python 第三步:提供一个从ECS中下载和删除文件的接口.py > output.log 2>&1 &
这个命令执行以下操作:
nohup
命令用于在后台运行进程,即使终端关闭后也能继续运行。
第三步:提供一个从ECS中下载和删除文件的接口.py
是你要运行的Python脚本。
> output.log
将标准输出重定向到名为output.log
的日志文件中。
2>&1
将标准错误也重定向到标准输出,这样错误信息也会被写入到output.log
中。
最后的&
符号用于将进程放到后台运行。
这样,你的Python项目就会在后台运行,并将print输出写入到指定的日志文件中。
如果你想部署在Windows服务器下,一个简单的方式就是通过 PyInstaller 来打包部署。它可以将Python代码及其依赖项(包括解释器)打包成单个可执行文件,这样即使服务器没有安装Python环境也可以运行你的应用程序。
下面命令可以将上面的Python脚本打包成一个exe
的可执行文件:
pyinstaller -F 第三步:提供一个从ECS中下载和删除文件的接口.py