当前位置:   article > 正文

FastAPI上传文件接口及上传代码使用gunicorn进行启动_fastapi gunicorn

fastapi gunicorn

服务器端代码:

代码说明:首次是创建了一个upload的url,指向的是upload_file方法,这个方法里面获取了文件的名称,然后重命名了文件名,最后把这个文件保存到执行的位置,默认就是当前目录下,最后给返回文件名

main.py

  1. from fastapi import FastAPI, UploadFile
  2. app = FastAPI()
  3. @app.post("/upload/")
  4. async def upload_file(file: UploadFile):
  5. file_name = file.filename
  6. print(file_name)
  7. file_name = '2333.xlsx'
  8. # 保存文件到指定位置
  9. with open(file_name, "wb") as f:
  10. f.write(file.file.read())
  11. return {"filename": file_name}
  12. if __name__ == '__main__':
  13. import uvicorn
  14. uvicorn.run(app, host='192.168.0.2', port=7799)

客户端请求代码:

  1. import requests
  2. if __name__ == '__main__':
  3. url = "http://192.168.0.2:7799/upload/"
  4. file_path = "测试数据.xlsx"
  5. with open(file_path, "rb") as file:
  6. files = {"file": file}
  7. response = requests.post(url, files=files)
  8. print(response.json())

使用 gunicorn 进行进程守护及监控:

gunicorn.py

  1. import os.path
  2. import multiprocessing
  3. daemon = True
  4. bind = '127.0.0.1:7799' # 配置你的IP和端口
  5. pidfile = '/var/run/gunicorn.pid'
  6. base_path = '/root/data_test' # 配置项目目录
  7. chdir = os.path.join(base_path, 'file_master') # 工作目录
  8. worker_class = 'uvicorn.workers.UvicornWorker'
  9. #workers = 10 # 设置worker数,一般采用下方的方法
  10. workers=multiprocessing.cpu_count()+1
  11. threads = 2
  12. loglevel = 'info' # 日志级别
  13. access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"'
  14. accesslog = os.path.join(base_path, 'logs', 'gunicorn_access.log')
  15. errorlog = os.path.join(base_path, 'logs', 'gunicorn_error.log')

启动服务,建议写成shell脚本,与gunicorn放置同一处

start.sh

  1. # 需要把main替换成你的主文件,app替换为主文件里面的FastAPI对象名称,如果你的命名和上述一样可直接使用
  2. gunicorn main:app -c gunicorn.py

启动后,可以通过 ps -ef|grep gunicorn main:app 查看进程情况,因为设置了多worker,会导致有很多进程,关闭服务时可以通过以下命令批量关闭:

stop.sh

  1. # 引号里面的数据取决于你开始任务的脚本,要保持一致
  2. pkill -f "gunicorn main:app"

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/542737
推荐阅读
相关标签
  

闽ICP备14008679号