Metadata-Version: 1.1
Name: radical-rpc
Version: 0.1.6
Summary: Multi-transport RPC with asyncio & Django support.
Home-page: https://github.com/and3rson/radical
Author: Andrew Dunai
Author-email: andrew@dun.ai
License: GPLv3
Description: ===========
        Radical RPC
        ===========
        
        .. contents:: Contents
        
        Decription
        ----------
        
        About
        ~~~~~
        
        Radical is a RPC library that allows you to have cross-service communication out of the box.
        
        It can serve as a replacement for Celery.
        
        Radical has out-of-the-box integration with Django and also supports asyncio, but can be used without it.
        
        Radical is easily extensible with custom transports and serializers.
        
        Available transports:
        
        * Redis
        * Postgres
        
        Default and recommended transport is Redis.
        
        Available serializers:
        
        * JSON
        * Pickle
        
        Default and recommended serializer is Pickle.
        
        Glossary
        ~~~~~~~~
        
        ============    ==================================================
        Term            Meaning
        ============    ==================================================
        Service         A fully autonomous application written with Django,
                        Sanic or vanilla Python.
        Transport       Module that provides interface to actual network
                        communication: for example, a Redis transport.
        Serializer      Module that provides interface to data
                        serialization and deserialization.
        ============    ==================================================
        
        Quick start
        -----------
        
        Installing
        ~~~~~~~~~~
        
            pip install radical-rpc
        
        Using with Django
        ~~~~~~~~~~~~~~~~~
        
        1. Add Radical to INSTALLED_APPS:
        
            .. code-block:: python
        
                INSTALLED_APPS = [
                    # ...
                    'radical',
                    # ...
                ]
        
        2. Configure Radical:
        
            .. code-block:: python
        
                RADICAL_CONFIG = {
                    'TRANSPORT_URL': 'redis://redis:6379/0?request_timeout=10',
                    'QUEUE_NAME': 'myapp',
                    'MODULES': [
                        'radical.demo'
                    ]
                }
        
        3. Call it anywhere:
        
            .. code-block:: python
        
                from radical.contrib.django import call_wait, call
                from django.http import JsonResponse
        
                def some_view(request):
                    # Call remote method and wait for it to return result.
                    result = call_wait('myapp', 'radical.demo.add', 1300, 37)
                    return JsonResponse(dict(result=result))  # Returns {'result': 1337}
        
                def some_view(request):
                    # Call remote method and do not wait for it to finish.
                    call('myapp', 'radical.demo.add', 1300, 37)
                    return JsonResponse(dict(result='Job was scheduled.'))
        
        4. Start Radical worker:
        
            .. code-block:: bash
        
                ./manage.py radical
        
Keywords: rpc,python2,python3,python,asyncio,aio,redis,django
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Framework :: Django
Classifier: Framework :: AsyncIO
Classifier: Topic :: Software Development :: Libraries
