flask-redis


Nameflask-redis JSON
Version 0.4.0 PyPI version JSON
download
home_pagehttps://github.com/underyx/flask-redis/
SummaryA nice way to use Redis in your Flask app
upload_time2019-05-29 10:55:54
maintainerBence Nagy
docs_urlNone
authorBence Nagy
requires_python>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*
license
keywords flask redis
VCS
bugtrack_url
requirements Flask redis
Travis-CI No Travis.
coveralls test coverage
            # flask-redis

[![CircleCI](https://circleci.com/gh/underyx/flask-redis.svg?style=svg)](https://circleci.com/gh/underyx/flask-redis)
[![codecov](https://codecov.io/gh/underyx/flask-redis/branch/master/graph/badge.svg)](https://codecov.io/gh/underyx/flask-redis)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/8f8297c1a5f542d49429c4837165984f)](https://www.codacy.com/app/bence/flask-redis?utm_source=github.com&utm_medium=referral&utm_content=underyx/flask-redis&utm_campaign=Badge_Grade)
[![GitHub tag (latest SemVer)](https://img.shields.io/github/tag/underyx/flask-redis.svg)](https://github.com/underyx/flask-redis/tags)

![PyPI - Python Version](https://img.shields.io/pypi/pyversions/flask-redis.svg)
![Flask version support is 0.9+](https://img.shields.io/badge/flask-0.9%2B-blue.svg)
![redis-py version support is 2.6+](https://img.shields.io/badge/redis--py-2.6%2B-blue.svg)
[![Code style: black](https://img.shields.io/badge/code%20style-black-black.svg)](https://github.com/ambv/black)

A nice way to use Redis in your Flask app.

## Configuration

Start by installing the extension with `pip install flask-redis`.
Once that's done, configure it within your Flask config.
Set the URL of your Redis instance like this:

```python
REDIS_URL = "redis://:password@localhost:6379/0"
```

If you wanna connect to a Unix socket,
you can specify it like `"unix://:password@/path/to/socket.sock?db=0"`.

## Usage

### Setup

To add a Redis client to your application:

```python
from flask import Flask
from flask_redis import FlaskRedis

app = Flask(__name__)
redis_client = FlaskRedis(app)
```

or if you prefer, you can do it the other way around:

```python
redis_client = FlaskRedis(app)
def create_app():
    app = Flask(__name__)
    redis_client.init_app(app)
    return app
```

### Accessing Redis

The redis client you created above from `FlaskRedis` acts just like a regular `Redis` instance from the [`redis-py`](https://github.com/andymccurdy/redis-py) library:

```python
from my_app import redis_client

@app.route('/')
def index():
    return redis_client.get('potato')
```

For detailed instructions on what methods you can use on the client,
as well as how you can use advanced features
such as Lua scripting, pipelines, and callbacks,
please check the
[redis-py documentation](https://redis-py.readthedocs.io/en/latest/).

**Pro-tip:** The [redis-py](https://github.com/andymccurdy/redis-py)
package uses the `redis` namespace, so it's nicer to name your Redis object something like `redis_client` instead of just `redis`.

## Extra features in flask-redis

### Custom providers

Instead of the default `Redis` client from `redis-py`,
you can provide your own.
This can be useful to replace it with [mockredis](https://github.com/locationlabs/mockredis) for testing:

```python
from flask import Flask
from flask_redis import FlaskRedis
from mockredis import MockRedis


def create_app():
    app = Flask(__name__)
    if app.testing:
        redis_store = FlaskRedis.from_custom_provider(MockRedis)
    else:
        redis_store = FlaskRedis()
    redis_store.init_app(app)
    return app
```

## Contributing

1. Check for open issues or open a fresh issue to start a discussion
2. Fork [the repository](https://github.com/underyx/flask-redis) on GitHub.
3. Send a pull request with your code!

Merging will require a test which shows that the bug was fixed,
or that the feature works as expected.
Feel free to open a draft pull request though without such a test
and ask for help with writing it if you're not sure how to.

As [Bence](https://underyx.me) (the only maintainer) works full-time,
please allow some time before your issue or pull request is handled.


## Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

## 0.4.0 (2019-05-29)

- Reorganized the module and rewrote everything other than the library code, mainly packaging and CI. There are no user-facing changes in behavior.

## 0.3.0 (2016-07-18)

- **Backwards incompatible:** The `FlaskRedis.init_app` method no
  longer takes a `strict` parameter. Pass this flag when creating your
  `FlaskRedis` instance, instead.
- **Backwards incompatible:** The extension will now be registered
  under the (lowercased) config prefix of the instance. The default
  config prefix is `'REDIS'`, so unless you change that, you can still
  access the extension via `app.extensions['redis']` as before.
- **Backwards incompatible:** The default class has been changed to
  `redis.StrictRedis`. You can switch back to the old `redis.Redis`
  class by specifying `strict=False` in the `FlaskRedis` kwargs.
- You can now pass all supported `Redis` keyword arguments (such as
  `decode_responses`) to `FlaskRedis` and they will be correctly
  passed over to the `redis-py` instance. Thanks, @giyyapan\!
- Usage like `redis_store['key'] = value`, `redis_store['key']`, and
  `del redis_store['key']` is now supported. Thanks, @ariscn\!

## 0.2.0 (2015-04-15)

- Made 0.1.0's deprecation warned changes final

## 0.1.0 (2015-04-15)

- **Deprecation:** Renamed `flask_redis.Redis` to
  `flask_redis.FlaskRedis`. Using the old name still works, but emits
  a deprecation warning, as it will be removed from the next version
- **Deprecation:** Setting a `REDIS_DATABASE` (or equivalent) now
  emits a deprecation warning as it will be removed in the version in
  favor of including the database number in `REDIS_URL` (or
  equivalent)
- Added a `FlaskRedis.from_custom_provider(provider)` class method for
  using any redis provider class that supports instantiation with a
  `from_url` class method
- Added a `strict` parameter to `FlaskRedis` which expects a boolean
  value and allows choosing between using `redis.StrictRedis` and
  `redis.Redis` as the defualt provider.
- Made `FlaskRedis` register as a Flask extension through Flask's
  extension API
- Rewrote test suite in py.test
- Got rid of the hacky attribute copying mechanism in favor of using
  the `__getattr__` magic method to pass calls to the underlying
  client

## 0.0.6 (2014-04-09)

- Improved Python 3 Support (Thanks underyx\!).
- Improved test cases.
- Improved configuration.
- Fixed up documentation.
- Removed un-used imports (Thanks underyx and lyschoening\!).

## 0.0.5 (2014-02-17)

- Improved suppot for the config prefix.

## 0.0.4 (2014-02-17)

- Added support for config_prefix, allowing multiple DBs.

## 0.0.3 (2013-07-06)

- Added TravisCI Testing for Flask 0.9/0.10.
- Added Badges to README.

## 0.0.2 (2013-07-06)

- Implemented a very simple test.
- Fixed some documentation issues.
- Included requirements.txt for testing.
- Included task file including some basic methods for tests.

## 0.0.1 (2013-07-05)

- Conception
- Initial Commit of Package to GitHub.


## Credits

The `flask-redis` project is written and maintained
by [Bence Nagy (underyx)](https://underyx.me).

The project was originally created by [Rhys Elsmore](https://rhys.io/),
who maintained it until the 0.0.6 release in 2014.
His work was licensed under the Apache 2 license.
The project has gone through a full rewrite since,
but his work was essential as inspiration.
Thanks, Rhys!

A full list of contributors can be found on [GitHub's Contributors page](https://github.com/underyx/flask-redis/graphs/contributors)
or you can obtain it on your own by running `git shortlog -sn`.



            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/underyx/flask-redis/",
    "name": "flask-redis",
    "maintainer": "Bence Nagy",
    "docs_url": null,
    "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*",
    "maintainer_email": "bence@underyx.me",
    "keywords": "flask,redis",
    "author": "Bence Nagy",
    "author_email": "bence@underyx.me",
    "download_url": "https://files.pythonhosted.org/packages/b8/d1/6e5a087e2fd99782451312dd467bbf5f9f64d999de900047dc0854a7d175/flask-redis-0.4.0.tar.gz",
    "platform": "",
    "description": "# flask-redis\n\n[![CircleCI](https://circleci.com/gh/underyx/flask-redis.svg?style=svg)](https://circleci.com/gh/underyx/flask-redis)\n[![codecov](https://codecov.io/gh/underyx/flask-redis/branch/master/graph/badge.svg)](https://codecov.io/gh/underyx/flask-redis)\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/8f8297c1a5f542d49429c4837165984f)](https://www.codacy.com/app/bence/flask-redis?utm_source=github.com&utm_medium=referral&utm_content=underyx/flask-redis&utm_campaign=Badge_Grade)\n[![GitHub tag (latest SemVer)](https://img.shields.io/github/tag/underyx/flask-redis.svg)](https://github.com/underyx/flask-redis/tags)\n\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/flask-redis.svg)\n![Flask version support is 0.9+](https://img.shields.io/badge/flask-0.9%2B-blue.svg)\n![redis-py version support is 2.6+](https://img.shields.io/badge/redis--py-2.6%2B-blue.svg)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-black.svg)](https://github.com/ambv/black)\n\nA nice way to use Redis in your Flask app.\n\n## Configuration\n\nStart by installing the extension with `pip install flask-redis`.\nOnce that's done, configure it within your Flask config.\nSet the URL of your Redis instance like this:\n\n```python\nREDIS_URL = \"redis://:password@localhost:6379/0\"\n```\n\nIf you wanna connect to a Unix socket,\nyou can specify it like `\"unix://:password@/path/to/socket.sock?db=0\"`.\n\n## Usage\n\n### Setup\n\nTo add a Redis client to your application:\n\n```python\nfrom flask import Flask\nfrom flask_redis import FlaskRedis\n\napp = Flask(__name__)\nredis_client = FlaskRedis(app)\n```\n\nor if you prefer, you can do it the other way around:\n\n```python\nredis_client = FlaskRedis(app)\ndef create_app():\n    app = Flask(__name__)\n    redis_client.init_app(app)\n    return app\n```\n\n### Accessing Redis\n\nThe redis client you created above from `FlaskRedis` acts just like a regular `Redis` instance from the [`redis-py`](https://github.com/andymccurdy/redis-py) library:\n\n```python\nfrom my_app import redis_client\n\n@app.route('/')\ndef index():\n    return redis_client.get('potato')\n```\n\nFor detailed instructions on what methods you can use on the client,\nas well as how you can use advanced features\nsuch as Lua scripting, pipelines, and callbacks,\nplease check the\n[redis-py documentation](https://redis-py.readthedocs.io/en/latest/).\n\n**Pro-tip:** The [redis-py](https://github.com/andymccurdy/redis-py)\npackage uses the `redis` namespace, so it's nicer to name your Redis object something like `redis_client` instead of just `redis`.\n\n## Extra features in flask-redis\n\n### Custom providers\n\nInstead of the default `Redis` client from `redis-py`,\nyou can provide your own.\nThis can be useful to replace it with [mockredis](https://github.com/locationlabs/mockredis) for testing:\n\n```python\nfrom flask import Flask\nfrom flask_redis import FlaskRedis\nfrom mockredis import MockRedis\n\n\ndef create_app():\n    app = Flask(__name__)\n    if app.testing:\n        redis_store = FlaskRedis.from_custom_provider(MockRedis)\n    else:\n        redis_store = FlaskRedis()\n    redis_store.init_app(app)\n    return app\n```\n\n## Contributing\n\n1. Check for open issues or open a fresh issue to start a discussion\n2. Fork [the repository](https://github.com/underyx/flask-redis) on GitHub.\n3. Send a pull request with your code!\n\nMerging will require a test which shows that the bug was fixed,\nor that the feature works as expected.\nFeel free to open a draft pull request though without such a test\nand ask for help with writing it if you're not sure how to.\n\nAs [Bence](https://underyx.me) (the only maintainer) works full-time,\nplease allow some time before your issue or pull request is handled.\n\n\n## Changelog\n\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)\nand this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).\n\n## 0.4.0 (2019-05-29)\n\n- Reorganized the module and rewrote everything other than the library code, mainly packaging and CI. There are no user-facing changes in behavior.\n\n## 0.3.0 (2016-07-18)\n\n- **Backwards incompatible:** The `FlaskRedis.init_app` method no\n  longer takes a `strict` parameter. Pass this flag when creating your\n  `FlaskRedis` instance, instead.\n- **Backwards incompatible:** The extension will now be registered\n  under the (lowercased) config prefix of the instance. The default\n  config prefix is `'REDIS'`, so unless you change that, you can still\n  access the extension via `app.extensions['redis']` as before.\n- **Backwards incompatible:** The default class has been changed to\n  `redis.StrictRedis`. You can switch back to the old `redis.Redis`\n  class by specifying `strict=False` in the `FlaskRedis` kwargs.\n- You can now pass all supported `Redis` keyword arguments (such as\n  `decode_responses`) to `FlaskRedis` and they will be correctly\n  passed over to the `redis-py` instance. Thanks, @giyyapan\\!\n- Usage like `redis_store['key'] = value`, `redis_store['key']`, and\n  `del redis_store['key']` is now supported. Thanks, @ariscn\\!\n\n## 0.2.0 (2015-04-15)\n\n- Made 0.1.0's deprecation warned changes final\n\n## 0.1.0 (2015-04-15)\n\n- **Deprecation:** Renamed `flask_redis.Redis` to\n  `flask_redis.FlaskRedis`. Using the old name still works, but emits\n  a deprecation warning, as it will be removed from the next version\n- **Deprecation:** Setting a `REDIS_DATABASE` (or equivalent) now\n  emits a deprecation warning as it will be removed in the version in\n  favor of including the database number in `REDIS_URL` (or\n  equivalent)\n- Added a `FlaskRedis.from_custom_provider(provider)` class method for\n  using any redis provider class that supports instantiation with a\n  `from_url` class method\n- Added a `strict` parameter to `FlaskRedis` which expects a boolean\n  value and allows choosing between using `redis.StrictRedis` and\n  `redis.Redis` as the defualt provider.\n- Made `FlaskRedis` register as a Flask extension through Flask's\n  extension API\n- Rewrote test suite in py.test\n- Got rid of the hacky attribute copying mechanism in favor of using\n  the `__getattr__` magic method to pass calls to the underlying\n  client\n\n## 0.0.6 (2014-04-09)\n\n- Improved Python 3 Support (Thanks underyx\\!).\n- Improved test cases.\n- Improved configuration.\n- Fixed up documentation.\n- Removed un-used imports (Thanks underyx and lyschoening\\!).\n\n## 0.0.5 (2014-02-17)\n\n- Improved suppot for the config prefix.\n\n## 0.0.4 (2014-02-17)\n\n- Added support for config_prefix, allowing multiple DBs.\n\n## 0.0.3 (2013-07-06)\n\n- Added TravisCI Testing for Flask 0.9/0.10.\n- Added Badges to README.\n\n## 0.0.2 (2013-07-06)\n\n- Implemented a very simple test.\n- Fixed some documentation issues.\n- Included requirements.txt for testing.\n- Included task file including some basic methods for tests.\n\n## 0.0.1 (2013-07-05)\n\n- Conception\n- Initial Commit of Package to GitHub.\n\n\n## Credits\n\nThe `flask-redis` project is written and maintained\nby [Bence Nagy (underyx)](https://underyx.me).\n\nThe project was originally created by [Rhys Elsmore](https://rhys.io/),\nwho maintained it until the 0.0.6 release in 2014.\nHis work was licensed under the Apache 2 license.\nThe project has gone through a full rewrite since,\nbut his work was essential as inspiration.\nThanks, Rhys!\n\nA full list of contributors can be found on [GitHub's Contributors page](https://github.com/underyx/flask-redis/graphs/contributors)\nor you can obtain it on your own by running `git shortlog -sn`.\n\n\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "A nice way to use Redis in your Flask app",
    "version": "0.4.0",
    "project_urls": {
        "Download": "https://github.com/underyx/flask-redis/releases",
        "Homepage": "https://github.com/underyx/flask-redis/"
    },
    "split_keywords": [
        "flask",
        "redis"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9d9ccead8fff1c8da2bd31a83ec476c3364812ee74f3c7c3445d070555f681d1",
                "md5": "76de72bbf395704b2d4395c0e9d36737",
                "sha256": "8d79eef4eb1217095edab603acc52f935b983ae4b7655ee7c82c0dfd87315d17"
            },
            "downloads": -1,
            "filename": "flask_redis-0.4.0-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "76de72bbf395704b2d4395c0e9d36737",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*",
            "size": 8550,
            "upload_time": "2019-05-29T10:55:52",
            "upload_time_iso_8601": "2019-05-29T10:55:52.456078Z",
            "url": "https://files.pythonhosted.org/packages/9d/9c/cead8fff1c8da2bd31a83ec476c3364812ee74f3c7c3445d070555f681d1/flask_redis-0.4.0-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b8d16e5a087e2fd99782451312dd467bbf5f9f64d999de900047dc0854a7d175",
                "md5": "41a3f42ee360f53f9b78030af7683dfd",
                "sha256": "e1fccc11e7ea35c2a4d68c0b9aa58226a098e45e834d615c7b6c4928b01ddd6c"
            },
            "downloads": -1,
            "filename": "flask-redis-0.4.0.tar.gz",
            "has_sig": false,
            "md5_digest": "41a3f42ee360f53f9b78030af7683dfd",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*",
            "size": 9906,
            "upload_time": "2019-05-29T10:55:54",
            "upload_time_iso_8601": "2019-05-29T10:55:54.195778Z",
            "url": "https://files.pythonhosted.org/packages/b8/d1/6e5a087e2fd99782451312dd467bbf5f9f64d999de900047dc0854a7d175/flask-redis-0.4.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2019-05-29 10:55:54",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "underyx",
    "github_project": "flask-redis",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "circle": true,
    "requirements": [
        {
            "name": "Flask",
            "specs": [
                [
                    ">=",
                    "0.9"
                ]
            ]
        },
        {
            "name": "redis",
            "specs": [
                [
                    ">=",
                    "2.6.2"
                ]
            ]
        }
    ],
    "tox": true,
    "lcname": "flask-redis"
}
        
Elapsed time: 0.14433s