Simple as dead support of Redis database for Flask apps.
Note
I named this Flask-And-Redis, cause Flask-Redis name already
taken, but that library didn't
match my needs.
$ pip install Flask-And-Redis
Flask-And-Redis is licensed under the BSD License.
As of py-redis 2.4.11 release you should setup next options in your
settings module:
REDIS_HOSTREDIS_PORTREDIS_DBREDIS_PASSWORDREDIS_SOCKET_TIMEOUTREDIS_CONNECTION_POOLREDIS_CHARSETREDIS_ERRORSREDIS_UNIX_SOCKET_PATH
Then all of these args would be sent to redis.Redis.__init__ method.
You also could pass app into initialized instance afterwards with init_app
method:
from flask import Flask from flask.ext.redis import Redis app = Flask(__name__) redis = Redis() redis.init_app(app)
Warning
Please note, if you'll initialize extension that way, make sure
that before init_app call all real Redis method's would be return
AttributeError exception cause of no connection_pool attribute,
which setup on redis.Redis instance init.
Some times, your redis setting stored as redis://... url (like in Heroku
or DotCloud services), sou you could to provide just REDIS_URL value
and Flask-And-Redis auto parsed that url and configured then valid redis
connection.
from flask import Flask from flask.ext.redis import Redis app = Flask(__name__) redis = Redis(app)
testapp/app.py
from flask import Flask, redirect, url_for
from flask.ext.redis import Redis
from testapp import settings
# Initialize simple Flask application
app = Flask(__name__)
app.config.from_object(settings)
# Setup Redis conection
redis = Redis(app)
# Add two simple views: One for forgetting counter
@app.route('/forget-us')
def forget_us():
key = app.config['COUNTER_KEY']
redis.delete(key)
return redirect(url_for('home'))
# Second for remembering visiting counter
@app.route('/')
def home():
key = app.config['COUNTER_KEY']
counter = redis.incr(key)
message = 'Hello, visitor!'
if counter != 1:
message += "\nThis page viewed %d time(s)." % counter
return message
testapp/settings.py
COUNTER_KEY = 'testapp:counter' REDIS_HOST = 'localhost' REDIS_PORT = 6379 REDIS_DB = 0 # REDIS_URL = 'redis://localhost:6379/0'
If you found some bug in Flask-And-Redis library, please, add new issue to
the project's GitHub issues.
- Move from
flask_redispackage to python module. - Little improvements for storing
_flask_appattribute toRedisinstance.
- Implement
init_appmethod.
- Convert
REDIS_PORTto anintinstance.
- Added support of
REDIS_URLsetting. By default,Rediswill try to guess host, port, user, password and db settings from that value.
- Initial release.