Metadata-Version: 1.1
Name: tle-storage-service
Version: 1.0.3
Summary: Small aiohttp server application for TLE storage
Home-page: https://github.com/nkoshell/tle-storage-service
Author: nkoshell
Author-email: nikita.koshelev@gmail.com
License: MIT
Download-URL: https://github.com/nkoshell/tle-storage-service/archive/1.0.3.tar.gz
Description: TLEStorageService
        _________________
        
        Small aiohttp server application for TLE storage
        
        
        Requirements
        ------------
        
        - aio-nasa-tle-loader >= 1.0.0
        - aio-space-track-api >= 2.1.1
        - aiohttp >= 2.1.0
        - aiopg >= 0.13.0
        - alembic >= 0.9.2
        - pyaml >=16.12.2
        - sqlalchemy >= 1.1.10
        - ujson >= 1.35
        
        
        Installing
        __________
        
        ::
        
            pip install tle-storage-service
        
        
        Getting started
        ---------------
        
        Start aiohttp application:
        
        .. code-block:: python
        
            #!/usr/bin/env python3
            # -*- coding: utf-8 -*-
            import logging
            import os
        
            from aiohttp import web
        
            from tle_storage_service import TleStorageService, load_cfg, LOG_FORMAT
        
            DIR = os.path.abspath(os.path.dirname(__file__))
        
        
            if __name__ == '__main__':
                logging.basicConfig(level=logging.INFO, format=LOG_FORMAT)
                app = TleStorageService(config=load_cfg(path=os.path.join(DIR, 'config', 'server.yaml')))
                web.run_app(app, port=8080)
        
        
        Create periodic script for refresh db
        
        .. code-block:: python
        
            #!/usr/bin/env python3
            # -*- coding: utf-8 -*-
            import asyncio
            import logging
            import os
        
            from aio_nasa_tle_loader import AsyncNasaTLELoader
            from aio_space_track_api import AsyncSpaceTrackApi
            from aiopg.sa import create_engine
        
            from tle_storage_service import periodic_task, load_cfg, nasa, space_track, LOG_FORMAT
        
            DIR = os.path.abspath(os.path.dirname(__file__))
            CFG = load_cfg(path=os.path.join(DIR, 'config', 'periodic.yaml'))
        
            logger = logging.getLogger(__name__)
        
        
            @periodic_task(CFG['sync'].get('space-track', 4) * 3600)
            async def call_space_track(engine, api_params, satellites, loop):
                async with AsyncSpaceTrackApi(loop=loop, **api_params) as api:
                    await space_track(engine, api, satellites)
        
        
            @periodic_task(CFG['sync'].get('nasa', 0.5) * 3600)
            async def call_nasa(engine, loop):
                async with AsyncNasaTLELoader(loop=loop) as loader:
                    await nasa(engine, loader)
        
        
            async def run(db_params, api_params, satellites, loop):
                async with create_engine(loop=loop, **db_params) as engine:
                    await asyncio.gather(
                        call_nasa(engine, loop),
                        call_space_track(engine, api_params, satellites, loop),
                        loop=loop
                    )
        
        
            def notify_callback(msg):
                logger.info('[%s] Receive msg <- "%s"', msg.channel, msg.payload)
        
        
            if __name__ == '__main__':
        
                logging.basicConfig(format=LOG_FORMAT, level=logging.DEBUG)
        
                loop = asyncio.get_event_loop()
                loop.create_task(run(CFG['db'],
                                     CFG['space-track'],
                                     CFG['sync']['satellites'],
                                     loop))
        
                try:
                    loop.run_forever()
                finally:
                    loop.close()
        
        
        More code examples into `examples` directory
        
        Source code
        -----------
        
        The latest developer version is available in a github repository:
        https://github.com/nkoshell/tle-storage-service
Platform: UNKNOWN
