Python搭配uWSGI运行报Unhandled object from iterator错误咨询
报错原因
WSGI 规范明确要求,Python WSGI 应用返回的可迭代对象(包括列表、生成器等)中的每一个元素必须是 bytes 字节类型,而非 str 字符串类型。你当前代码返回列表中的元素为 Unicode 字符串,uWSGI 无法识别处理该类对象,因此抛出对应错误。
你测试时将最后一行替换为 yield None 不报错属于巧合现象:None 不会输出任何实际内容,相当于直接返回空响应,跳过了内容校验处理逻辑,并非正确的解决方式。
解决方案
任选以下一种方案修改 /var/www/test.py 即可修复问题:
- 方案1:将返回的字符串编码为字节类型
def application(env, start_response): start_response('200 OK', [('Content-Type', 'text/html; charset=utf-8')]) return ["<h1 style='color:blue'>Test</h1>".encode('utf-8')]
- 方案2:使用生成器模式返回字节内容
def application(env, start_response): start_response('200 OK', [('Content-Type', 'text/html; charset=utf-8')]) yield "<h1 style='color:blue'>Test</h1>".encode('utf-8')
注:建议在Content-Type响应头中明确指定charset编码,避免浏览器渲染页面时出现乱码。
内容的提问来源于stack exchange,提问作者МАН69К
相关产品推荐
相关产品推荐

