Metadata-Version: 2.1
Name: aiohttp-session-file
Version: 0.0.1
Summary: file sessions for aiohttp.web
Home-page: https://github.com/zhangkaizhao/aiohttp-session-file
Author: Kaizhao Zhang
Author-email: zhangkaizhao@gmail.com
License: Apache 2
Platform: UNKNOWN
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Framework :: AsyncIO
Requires-Python: >=3.5
Description-Content-Type: text/x-rst
Requires-Dist: aiohttp-session
Requires-Dist: aiofiles

aiohttp_session_file
====================

The library provides file sessions store for `aiohttp.web`__.

.. _aiohttp_web: https://aiohttp.readthedocs.io/en/latest/web.html

__ aiohttp_web_

Usage
-----

A trivial usage example:

.. code:: python

    import asyncio
    import shutil
    import time

    from aiohttp import web
    from aiohttp_session import setup, get_session
    from aiohttp_session_file import FileStorage


    async def handler(request):
        session = await get_session(request)
        last_visit = session['last_visit'] if 'last_visit' in session else None
        session['last_visit'] = time.time()
        text = 'Last visited: {}'.format(last_visit)
        return web.Response(text=text)


    async def setup_dir(app):
        dirpath = tempfile.mkdtemp(prefix='aiohttp-session-')

        async def remove_dir(app):
            shutil.rmtree(dirpath)

        app.on_cleanup.append(remove_dir)
        return dirpath


    async def make_app():
        app = web.Application()
        loop = asyncio.get_event_loop()

        dirpath = await setup_dir(app)

        max_age = 3600 * 24 * 365  # 1 year
        setup(app, FileStorage(dirpath, max_age=max_age))

        app.router.add_get('/', handler)
        return app


    web.run_app(make_app())

