nginx с flask и memcached возвращает некоторые искаженные символы

Я пытаюсь кэшировать ответы Python/flask с помощью memcached. Затем я хочу обслуживать кеш с помощью nginx. Я использую код flask, который выглядит примерно так:

from flask import Flask, render_template
from werkzeug.contrib.cache import MemcachedCache

app = Flask(__name__)

cache = MemcachedCache(['127.0.0.1:11211'])

@app.route('/')
def index():
    index = cache.get('request:/')
    if index == None:
        index = render_template('index.html')
        cache.set('request:/', index, timeout=5 * 60)
    return index

if __name__ == "__main__":
    app.run()

и конфигурацию сайта nginx, которая выглядит примерно так:

server {
    listen 80;

    location / {
        set $memcached_key "request:$request_uri";
        memcached_pass 127.0.0.1:11211;

        error_page 404 405 502 = @cache_miss;
    }

    location @cache_miss {
        uwsgi_pass   unix:///tmp/uwsgi.sock;
        include      uwsgi_params;

        error_page  404  /404.html;
    }
}

Однако, когда он извлекается из кеша, html-код имеет префикс V, содержит символы \u000a (перевод строки) и искаженные локальные символы, а также имеет суффикс «p1». как таковой:

V<!doctype html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\u000a<head>\u000a  <meta http-equiv="content-type" content="text/html; charset=UTF-8" />\u000a  <meta http-equiv="content-language" content="no">\u000a\u000a  <title>

[...]

\u000a\u000a</body>\u000a</html>
p1
.

Несмотря на то, что Content-Type имеет значение "text/html; charset=utf-8". Предположительно V [...] p1 . вещь может иметь какое-то отношение к фрагментированной передаче, кодирующей что-то, флаг, которого нет в заголовке ответа. Что мне делать?

6
задан jondoe 4 April 2012 в 18:13
поделиться