我看到了许多与我的问题相似的解决方案,但是没有一个适合我。请帮我解决。 首先,我要测试我的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
我仔细检查了代码,没问题。
我做错了什么?
除此之外,我昨天成功运行了此代码,今天却出错了。
请帮助我!
答案 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这样的微型框架,因为它将为您处理这类细节。