2016-05-26 8 views
0

Ich habe Memcache mit dem AWS Elastic-Cache-Dienst eingerichtet. Ich habe überprüft, dass ich mit dem Endpunkt telnet und Elemente speichern und abrufen kann.Verwenden von Flask-Cache mit Memcached (AWS Elastic-Cache)

Jetzt versuche ich Memcache für Flask-Cache zu verwenden. Ich habe den folgenden Code.

from this import s, d 
from string import translate, maketrans 

from flask import Flask 
from flask.ext.cache import Cache 

app = Flask(__name__) 
cache = Cache(app, config={'CACHE_TYPE': 'memcached', 
            'CACHE_MEMCACHED_SERVERS' : "My endpoint", 
            'CACHE_KEY_PREFIX' : "optimization"}) 
#cache = Cache(app, config={'CACHE_TYPE': 'filesystem', 'CACHE_DIR': '/tmp'}) 


@cache.cached(timeout=10, key_prefix="current_time") 
def get_current_time(): 
    return time.ctime() 

def random_zen_quote(): 
    """Pick a random quote from the Zen of Python""" 
    transtable = maketrans("".join(d.keys()), "".join(d.values())) 
    return random.choice(translate(s, transtable).split("\n")[2:]) 

@app.route("/") 
def zen(): 
    return """ 
    <ul> 
     <li><strong>It is cached:</strong> {cached}</li> 
     <li><strong>It is not cached:</strong> {not_cached}</li> 
    </ul> 
    """.format(
      cached=get_current_time(), 
      not_cached=random_zen_quote() 
    ) 

if __name__ == "__main__": 
    app.run(debug=True, port=5000, host='0.0.0.0') 

Ich habe mich auf this beziehen.

Ich habe auch pylibmc installieren. Wenn ich den obigen Code ein und drücken Sie die URL laufen lasse, erhalte ich folgende Fehlermeldung:

Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1836, in __call__ 
    return self.wsgi_app(environ, start_response) 
    File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1820, in wsgi_app 
    response = self.make_response(self.handle_exception(e)) 
    File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1403, in handle_exception 
    reraise(exc_type, exc_value, tb) 
    File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1817, in wsgi_app 
    response = self.full_dispatch_request() 
    File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request 
    rv = self.handle_user_exception(e) 
    File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1381, in handle_user_exception 
    reraise(exc_type, exc_value, tb) 
    File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request 
    rv = self.dispatch_request() 
    File "/usr/local/lib/python2.7/site-packages/flask/app.py", line 1461, in dispatch_request 
    return self.view_functions[rule.endpoint](**req.view_args) 
    File "/projects/mv2/test.py", line 34, in zen 
    cached=get_current_time(), 
    File "/usr/local/lib/python2.7/site-packages/Flask_Cache-0.13.1-py2.7.egg/flask_cache/__init__.py", line 289, in decorated_function 
    rv = self.cache.get(cache_key) 
    File "/usr/local/lib/python2.7/site-packages/werkzeug/contrib/cache.py", line 406, in get 
    return self._client.get(key) 

Ich bin nicht sicher, was der Fehler bedeutet.

Auch wenn ich ein lokales Dateisystem verwende, funktioniert es wie erwartet.

Antwort

-1

Verwenden Sie dies.

'CACHE_MEMCACHED_SERVERS': ("My Endpunkt"),

+0

Während dieser Code-Schnipsel, die Frage lösen kann, [einschließlich einer Erklärung] (http://meta.stackexchange.com/questions/114762/explaining- vollständig code-basierte Antworten) hilft wirklich, die Qualität Ihres Beitrags zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. – lokusking