Metadata-Version: 1.2
Name: limis
Version: 0.0a4
Summary: light microservice solution
Home-page: https://limis.io
Author: Philip Streck
Author-email: philip@limis.io
License: MIT
Description: limis
        =====
        .. image:: https://travis-ci.org/limis-project/limis.svg?branch=master
            :alt: limis build status
            :target: https://travis-ci.org/limis-project/limis
        
        .. image:: https://codecov.io/gh/limis-project/limis/branch/master/graph/badge.svg
            :alt: limis coverage status
            :target: https://codecov.io/gh/limis-project/limis
        
        limis is a light microservice framework built in `Python <https://www.python.org/>`_ and powered by
        `Tornado <https://www.tornadoweb.org/>`_. The project is currently in active development and should be considered alpha
        grade at the moment. Features are being added and removed and expect the API to change frequently.
        
        Instructions
        ------------
        
        Installation
        ~~~~~~~~~~~~
        .. code-block::
        
            pip install limis
        
        Project Creation
        ~~~~~~~~~~~~~~~~
        .. code-block::
        
            limis-management create_project <project_name>
        
        Service Creation
        ~~~~~~~~~~~~~~~~
        * Scaffold the services with the project management command:
        
        .. code-block::
        
            cd <project_name>
            python management.py create_service <service_name>
        
        * Create a request handler to route service requests to your component in '<service_name>/handlers.py':
        
        .. code-block:: python
        
            from typing import Union
        
            from tornado.websocket import WebSocketHandler
            from limis.services.handlers import ComponentHandler
        
        
            class HelloHTTPHandler(ComponentHandler):
                def get(self):
                    self.write(self.component_class().hello())
        
        
            class HelloWebSocketHandler(ComponentHandler, WebSocketHandler):
                def on_message(self, message: Union[str, bytes]):
                    self.write_message(self.component_class().hello())
        
        * Create a component to perform actions on requests in '<service_name>/components.py':
        
        .. code-block:: python
        
            from limis.services.components import Component
        
            from hello.handlers import HelloHTTPHandler, HelloWebSocketHandler
        
        
            class HelloComponent(Component):
                component_name = 'hello'
                component_path = 'hello'
                component_http_handler = HelloHTTPHandler
                component_websocket_handler = HelloWebSocketHandler
        
                def hello(self):
                    return 'hello'
        
        * Create a services configuration entry in '<service_name>'/services.py:
        
        .. code-block:: python
        
            from limis.services import Service
        
            from hello.components import HelloComponent
        
        
            services = [
                Service(name='hello', path='hello', components=[HelloComponent]),
            ]
        
        * Add your services module to the project services configuration '<project_name>/services.py':
        
        .. code-block:: python
        
            from hello.services import services as hello_services
        
        
            context_root = ''
            services = hello_services
        
        Launch Server
        ~~~~~~~~~~~~~
        Launch the limis server from the command prompt:
        
        .. code-block::
        
            python manage.py server --http --websocket
        
        Test Service
        ~~~~~~~~~~~~
        
        * HTTP Service
        
        .. code-block::
        
            curl http://localhost:8080/hello/hello
        
        Output:
        
        .. code-block::
        
            hello
        
        * WebSocket Service
        
        Example using `websocket-client <https://github.com/websocket-client/websocket-client>`_
        
        .. code-block:: python
        
            from websocket import create_connection
            websocket = create_connection('ws://localhost:8888/hello/hello/')
            websocket.send('test')
            websocket.recv()
        
        Output:
        
        .. code-block::
        
            hello
Platform: any
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
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: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Internet :: WWW/HTTP
Requires-Python: >=3.5
