python遇见错误

python遇见错误

  1. TypeError: expected string or bytes-like object
  2. TypeError: func must be a callable or a textual reference to one

第一个错误是在使用Wordcloud库的时候出现的问题,是在调用generate的时候出现的错误,检查了自己的错误之后我发现原来我把东西弄成了列表类型去统计出现次数,这样是不符合类型规则的,应该是字符串类型才对,然后我把列表改掉了之后错误没有再发生。
第二个错误是在使用定时获取网页信息的时候出现的,一开始我是以为出现这个错误的原因是因为我把时间写错了,写成了过去时间(我想试一下这个能不能通过编译),后来改了时间之后发现不行,于是百度这个错误,查看了一个blog之后发现原来是我是用定时器的那个函数有返回值,返回值出现了不知道到哪里的错误,于是我改了一下我的main方法的框架,直接调用main函数定时,这样通过没有返回值的问题就把问题解决掉了。
参考链接:https://pdf-lib.org/Home/Details/8447

### 解决Python FastAPI框架中遇到的问题 #### WebSocket连接问题 当使用FastAPI处理WebSocket请求时,可能会遇到`Unsupported upgrade request`错误。这通常是因为服务器配置不支持HTTP升级协议,而WebSocket依赖于这种机制来建立持久连接[^1]。 为了修复这个问题,可以尝试以下方法: - **确认中间件兼容性**:确保所有使用的中间件都与WebSocket兼容。 - **检查部署环境**:如果是在生产环境中运行应用,则需验证Web服务器(如Nginx)已正确配置以转发WebSocket连接。 ```nginx location /ws/ { proxy_pass http://backend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; } ``` #### 请求体解析异常 针对POST、PUT等操作的数据绑定失败情况,在定义路由处理器时应采用Pydantic模型类作为输入参数类型提示。这样可以让FastAPI自动完成JSON反序列化工作,并执行必要的字段验证逻辑[^2]。 示例代码如下所示: ```python from fastapi import FastAPI, UploadFile, File from pydantic import BaseModel class Item(BaseModel): name: str description: str | None = None price: float tax: float | None = None @app.post("/items/") async def create_item(item: Item): return item.dict() ``` #### 文件上传功能实现不当 对于需要接收客户端提交文件的应用场景,应当引入`UploadFile`对象并通过路径装饰器内的形参列表声明它。此外还需调用`.read()`读取二进制流内容以便后续存储到磁盘或其他位置[^4]。 下面给出一段完整的例子用于说明如何安全高效地保存来自用户的多媒体资源: ```python import os from uuid import uuid4 from pathlib import Path from typing import Annotated from fastapi import APIRouter, HTTPException, Depends, status from fastapi.responses import JSONResponse router = APIRouter() UPLOAD_DIR = "./uploads" Path(UPLOAD_DIR).mkdir(parents=True, exist_ok=True) @router.post("/uploadfile/", response_model=dict[str, str]) async def upload_file( file: Annotated[UploadFile, File(...)] ) -> dict[str, str]: try: ext = file.filename.split(".")[-1].lower() if not any(ext == allowed_ext for allowed_ext in ["jpg", "jpeg", "png"]): raise ValueError("Invalid image format.") filename = f"{uuid4().hex}.{ext}" filepath = os.path.join(UPLOAD_DIR, filename) with open(filepath, 'wb') as buffer: content = await file.read() buffer.write(content) return {"filename": filename} except Exception as e: error_msg = str(e) raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=error_msg) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值