我的“controller.py”脚本
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
def application(environ, start_response):
# the ouput string to respuesta var
respuesta = "<p>Página web construida con <strong>Python!!!</strong></p>"
# generating the response OK
start_response('200 OK', [('Content-Type', 'text/html; charset=utf-8')])
return respuesta
在“error.log”中:
【3月13日星期一12:36:32.656669 2017】【wsgi:错误】【pid 28767:tid
139926041507584][客户端127.0.0.1:56382]mod_wsgi(pid=28767):
处理WSGI脚本时发生异常
'/var/www/python/app/controller.py'。【2017年3月13日星期一12:36:32.656761】
[wsgi:error][pid 28767:tid 139926041507584][client 127.0.0.1:56382]
TypeError:需要字节字符串值序列,str类型的值
找到了ubuntu@ip--::var/www/python/logs$TypeError:
需要字节字符串值序列,找到str类型的值
我读过,但答案不起作用。
我的site.conf
<VirtualHost *:80>
ServerName app.salvaj.es
ServerAdmin [email protected]
DocumentRoot /var/www/python/static
WSGIScriptAlias / /var/www/python/app/controller.py
ErrorLog /var/www/python/logs/error.log
CustomLog /var/www/python/logs/access.log combined
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/python/static>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
最佳答案
你做错了两件事。
首先,响应必须是字节上的iterable,而不是Unicode。
第二个是返回一个字符串,而不是一个字符串列表。后者使代码效率非常低,因为一次只发送一个字符。
使用:
return [respuesta.encode('UTF-8')]
更好的是,不要自己从头开始编写WSGI应用程序,使用像Flask这样的web框架,因为它可以为您处理所有这些细节。
关于linux - Apache2和mod_wsgi python3'TypeError:'并返回错误500,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42764207/