Skip to main content

Simple session implementation for Tornado

Project description

# redis-session
Web session implementation with redis store

[![PYPI Version][pypi-image]][pypi-url]
[![Build Status][travis-image]][travis-url]

## Description
Implementated for python3 and tornado(other web frameworks to be supported later), using redis hashes to save session data.

+ For controlling expiration of sessions, we are using redis key expiration, and we only control session expiration at server/database side, while using default expiration time of secure cookies for session ids.

+ Reading session data in a request will cause a session expiration reset per request. Modify session data will cause a reset per modification.

+ We are using tornado.options module, so please run below once at start.
# or
+ Please specify `cookie_secret` for we are using secure cookie keys.

+ Getting session attributes is achived by directly fetching from redis to avoid stale data being read. So, when it's not necessary, copy the data instead of reading again, which means:
# Do this
name =
names.append(name) = make_new_name(name)
# Instead of (When we are not worried about conficts with other process)
names.append( = make_new_name( # This will read name from redis again

## Command line parameters

# For tornado users
define('session-redis', default='redis://localhost:6379', help='session store redis url', type=str)
define('session-redis-prefix', help='redis key prefix', type=str)
define('session-expire', help='session ttl(seconds)', type=int)
define('session-cookie-id', help='cookie key, default: session-id', type=str)

## Setup & Install

#### Via pip

pip install redis_session

#### From source

python build && python install

## Session data parsing
We provide common redis result parsing methods. For example:

# Get raw bytes

# Parsing to types

# Check if is none


## Example

# With tornado framework

import tornado.web
import tornado.httpserver
import tornado.ioloop
from tornado.options import options, define, parse_command_line
from redis_session import SessionHandler

define('port', default=3000, help='run on the given port', type=int)
define('debug', default=False, help='run in debug mode')

class MainHandler(SessionHandler):
def get(self):
self.write('Redis Session Example\n')
count =
self.write(f'Current Session Value:{count}\n')
self.session.count = count + 1
self.write(f'Current Session Value:{}\n')

def main():
application = tornado.web.Application([(r'/', MainHandler)], cookie_secret='udxas-efasx-ase323fs-3efsxf3eFdes')
http_server = tornado.httpserver.HTTPServer(application)

if __name__ == '__main__':


Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for redis-session, version 0.0.3
Filename, size File type Python version Upload date Hashes
Filename, size redis_session-0.0.3-py3-none-any.whl (5.2 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size redis_session-0.0.3.tar.gz (4.5 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page