使用Apache mod_wsgi测试错误-Windows环境

时间:2018-08-10 02:59:27

标签: apache flask mod-wsgi

我看到了许多与我的问题相似的解决方案,但是没有一个适合我。请帮我解决。 首先,我要测试我的Apache的mod_wsgi。

httd.conf:

LoadFile "e:/zt_6.27/python/python35.dll"
LoadModule wsgi_module "e:/zt_6.27/python/lib/site- 
packages/mod_wsgi/server/mod_wsgi.cp35-win_amd64.pyd"
WSGIPythonHome "e:/zt_6.27/python"

<VirtualHost *:80>       
    WSGIScriptAlias /myapp E:\zt_6.27\Apache24\htdocs\myapp.wsgi
    <Directory 'E:\zt_6.27\Apache24\htdocs'>
        Require all granted
        Require host ip
        Allow from all
    </Directory>
</VirtualHost>

myapp.wsgi:

def application(environ,start_response):
  status='200 OK'
  output='Hello wsgi!'
  response_headers=[('Content-type','text/plain'),('Content-Length',str(len(output)))]
  start_response(status,response_headers)
  return[output]

我重新启动apache服务,呼叫“ http://localhost/myapp”。

它返回500内部服务器错误。

我打开apache的error.log。

显示:

[Fri Aug 10 10:33:35.803119 2018] [wsgi:error] [pid 9252:tid 1408] [client 
::1:57261] mod_wsgi (pid=9252): Exception occurred processing WSGI script 
'E:/zt_6.27/Apache24/htdocs/myapp.wsgi'.
[Fri Aug 10 10:33:35.803119 2018] [wsgi:error] [pid 9252:tid 1408] [client 
::1:57261] TypeError: sequence of byte string values expected, value of type 
str found\r

我仔细检查了代码,没问题。

我做错了什么?

除此之外,我昨天成功运行了此代码,今天却出错了。

请帮助我!

1 个答案:

答案 0 :(得分:0)

如果使用Python 3,则必须使用:

countries/{country}
fields : last_updated

cities/{city}
fields :Populations, country

即,更改为:

def application(environ,start_response):
  status = '200 OK'
  output = b'Hello wsgi!'
  response_headers = [('Content-type','text/plain'),('Content-Length',str(len(output)))]
  start_response(status,response_headers)
  return[output]

返回的列表中必须包含字节字符串,而不是unicode字符串。

要返回unicode字符串,您需要将其转换为字节字符串。我在这里作弊只是将其标记为以字节字符串开头,但是您应该将它们编码为UTF-8字节字符串。

我建议使用像Flask这样的微型框架,因为它将为您处理这类细节。