我的“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/

10-16 11:30