Multi-transport RPC with asyncio & Django support.
Project description
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
Add Radical to INSTALLED_APPS:
INSTALLED_APPS = [ # ... 'radical', # ... ]
Configure Radical:
RADICAL_CONFIG = { 'TRANSPORT_URL': 'redis://redis:6379/0?request_timeout=10', 'QUEUE_NAME': 'myapp', 'MODULES': [ 'radical.demo' ] }
Call it anywhere:
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.'))
Start Radical worker:
./manage.py radical
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.