谷歌在这种情况下没用,似乎我第一次遇到这个错误:/在我的Mac上工作正常,但在Windows 8装备上使用相同的文件在尝试请求静态时在日志中出现以下错误像CSS文件和图像的资产。以下是错误摘录:
INFO 2014-06-08 14:42:28,431 module.py:639] default: "GET /css/rootStyles.css HTTP/1.1" 200 5454
ERROR 2014-06-08 14:42:28,431 module.py:714] Request to '/css/rootStyles.css' failed
Traceback (most recent call last):
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\devappserver2\module.py", line 710, in _handle_request
return handler.handle(match, environ, wrapped_start_response)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\devappserver2\static_files_handler.py", line 369, in handle
return self._handle_path(full_path, environ, start_response)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\devappserver2\static_files_handler.py", line 182, in _handle_path
start_response('200 OK', headers)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\devappserver2\module.py", line 640, in wrapped_start_response
return start_response(status, response_headers, exc_info)
File "C:\Program Files (x86)\Google\google_appengine\lib\cherrypy\cherrypy\wsgiserver\wsgiserver2.py", line 2155, in start_response
raise TypeError("WSGI response header value %r is not of type str." % v)
TypeError: WSGI response header value u'text/css' is not of type str.
INFO 2014-06-08 14:42:28,433 module.py:639] default: "GET /css/rootStyles.css HTTP/1.1" 500 -
我的app.yml文件如下所示:
application: foobarbaz
version: 1
runtime: python27
api_version: 1
threadsafe: yes
handlers:
- url: /favicon\.ico
static_files: favicon.ico
upload: favicon\.ico
- url: /img
static_dir: img
- url: /font
static_dir: font
- url: /css
static_dir: css
- url: .*
script: main.app
libraries:
- name: webapp2
version: "2.5.2"
- name: jinja2
version: latest
答案 0 :(得分:10)
怪异。另一个人昨天在Windows上有静态文件500错误。这可能是GAE错误,其中mimetype猜测作为标头中的python unicode字符串发送。尝试将mime_type: "text/css"
添加到- url: /css
,如下所示:
- url: /css
static_dir: css
mime_type: "text/css"
在app.yaml中。我不认为这会解决问题,但有助于诊断。您很可能会在img和字体标题上出现另一个错误。
您可以为其他人使用通配符映射:
- url: /img/(.*\.gif)$
static_files: img/\1
upload: img/.*\.gif$
mime_type: "image/gif"
- url: /img/(.*\.png)$
static_files: img/\1
upload: img/.*\.png$
mime_type: "image/x-png"
- url: /img/(.*\.jpg)$
static_files: img/\1
upload: img/.*\.jpg$
mime_type: "image/jpeg"
和类似的字体。就像我说的,这可能只是GAE for Windows中的一个错误的补丁。我不完全理解请求和响应之间的握手,但您可以尝试将以下内容添加为模板中的第一个<meta>
标记,以查看是否可以改善通信:
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta charset="UTF-8">
答案 1 :(得分:3)
我在使用python 2.7.7的Windows 8.1上使用GAE SDK 1.9.6时遇到了同样的问题(我只使用了python版本并且使用Go SDK经历过这种情况)。
我只是更新到python 2.7.8 ,似乎问题已经解决。
只是想在这里分享一下,看看其他人是否可以证实这一点。我还将此结果添加到了@Bradley提交的bug。希望这会有所帮助。
答案 2 :(得分:1)
作为我编辑的解决方法 \谷歌\ AppEngine上\ TOOLS \ devappserver2 \ ADMIN \ static_file_handler.py 在
content_type,_ = mimetypes.guess_type(asset_path)
断言content_type,(
到
content_type,_ = mimetypes.guess_type(asset_path)
content_type = str(content_type)
断言content_type,(
当然是适当的缩进
这仅适用于管理控制台 你也可以尝试一下 \谷歌\应用服务引擎\工具\ devappserver2 \ static_file_handler.py
这
return self._url_map.mime_type
到
return str(self._url_map.mime_type)
我猜,但我还没有真正尝试过。
答案 3 :(得分:1)
在GAE的问题跟踪器中启动了一个错误。见这里:https://code.google.com/p/googleappengine/issues/detail?id=11001 与此同时,该线程上的#4号临时补丁正常工作。
google\appengine\tools\devappserver2\static_files_handler.py
line 166, 167, 168, need add str to self._get_mime_type(full_path)
if user_headers.Get('Content-type') is None:
#headers.append(('Content-type', self._get_mime_type(full_path)))<br />
headers.append(('Content-type', str(self._get_mime_type(full_path))))<br /><br />
# 2014-06-09 fix on Win7 "TypeError: WSGI response header value u'text/html' is not of type str"
答案 4 :(得分:0)
我通过将python从2.7.7降级到2.7.6来摆脱这个问题。也许你们能够在2.7.7 release notes中发现导致这种行为的变化。
答案 5 :(得分:0)
我有同样的问题'TypeError:WSGI响应头值y text / css'不是字节字符串'。我看不到CSS样式,它给我状态500。 我使用python 2.7.7并将其更改为2.7.6并且一切正常!
答案 6 :(得分:0)
如果/ var已满,也会报告错误500(没有进一步详细说明;没有回溯或其他内容)。