python使用fastapi遇到的一系列问题

记录一下部署fastapi过程以及遇到的问题

项目架构

问题一 :

在这里插入图片描述
启动我这里采用运行main.py的形式,方便后面构建Dockerfile
我看网上很多例子都是把item和user的models放在一起,一起运行,没有问题
但是一旦采用我这种方式进行拆分分层,在映射字段一对多的时候 ,会报错,说Item找不到
很正常,需要导入Item的模块
在这里插入图片描述
于是我在User的models导入了Item模块,虽然是灰色代表没有被调用,但是他会默认去找这个类,不写会报错
在这里插入图片描述

问题二:

看了很多网上代码,他们都在接口定义db的链接,
例如
在这里插入图片描述
我认为db属于与数据库进行操作的行为,应该放在dao层
于是在dao导入get_db方法
在这里插入图片描述
python中用yield定义属于生成器:用我熟悉的话类似java的迭代器,所以需要循环取出

问题三:

部署问题
如果只是简单的放在linux进行命令启动
cd到项目的根目录下

uvicorn web:app --reload

启动,如果不改配置的话默认使用127.0.0.1:8000
首先先关闭防火墙,准确的说打开防火墙的8000端口,我为了方便直接关防火墙
我这里启动成功但是在windows访问却无法连接,最后我采用更改ip

uvicorn main:app --host ‘192.168.93.131’ --port 8080 --reload

问题四:

借鉴链接:https://blog.csdn.net/u013282737/article/details/85233408
docker构建时出现的问题:
这是我的Dockerfile内容
在这里插入图片描述
CMD的我理解意思就是在你生成的docker容器目录中,在/code/demo2/下使用 python main.py 这个命令
具体如何构建镜像部署上面生成了我学习的来链接
其中遇到了很多问题

  • 运行容器的时候

docker: Error response from daemon: OCI runtime create failed: container_linux.go:344: starting container process caused “process_linux.go:297: getting the final child’s pid from pipe caused “first_web: connection reset by peer””: unknown.

出现的问题大概率是linux内核版本和docker不兼容
所以需要升级linux内核版本

问题五:

在这里插入图片描述
因为我在main.py里面配置的是127.0.0.1也是报无法分配这个ip,然后以为改成linux的ip就行了,结果还是不行
后来我将main.py改成了 0.0.0.0 表示本机地址就可以启动成功了
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值