Skip to main content

Sanic Cookie and Session Management

Project description

Build Status Software License

Sanic Cookies

Code here is mostly borrowed from sanic_session.

I wanted to make some changes that would break a big part of sanic_session's API, so I decided to create this repo instead.

Some of the main deviations from sanic_session are:

  1. Interfaces are only responsible for reading/writing the session_dict. Session management logic is handled by the session object

  2. No race conditions:

    By using:

     async with request['session']:
         request['session']['foo'] = 'bar'
    

    instead of:

     request['session']['foo'] = 'bar'
    

    It is still however possible to use the session_dict without a context manager, but it will raise some warnings, unless it's explicitly turned off (warn_lock=False)

  3. A more simple implementation of SessionDict that helps me sleep in peace at night. (Probably less performant)

  4. In memory interface schedules cleanup to avoid running out of memory

Quick Start

from sanic_cookies import Session, InMemory

interface = InMemory()
app = Sanic()
Session(app, master_interface=interface)

# You can skip this part if you don't want scheduled interface cleanup
@app.listener('before_server_start')
def init_inmemory(app, loop):
    interface.init()
@app.listener('after_server_stop')
def kill_inmemory(app, loop):
    interface.kill()

@app.route('/')
async def handler(request):
    async with request['session'] as sess:
        sess['foo'] = 'bar'

If enough people are interested, I can write some docs. Meanwhile, if you excuse me...

Gotta go fast!!

Project details


Download files

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

Source Distribution

sanic_cookies-0.1.4.tar.gz (9.3 kB view details)

Uploaded Source

File details

Details for the file sanic_cookies-0.1.4.tar.gz.

File metadata

  • Download URL: sanic_cookies-0.1.4.tar.gz
  • Upload date:
  • Size: 9.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.7.2 requests-toolbelt/0.9.1 tqdm/4.30.0 CPython/3.6.7

File hashes

Hashes for sanic_cookies-0.1.4.tar.gz
Algorithm Hash digest
SHA256 13120eb847399d5ae9827dbea922af12469760a0e1a93f5234fd3189c209c578
MD5 0ffe0dac8e368360a8bfea47cd64c3c9
BLAKE2b-256 c8f84600a5ac236a06586f5b432b1ce22c191e7551ce8f4f96f9f7415de0d188

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page