支持异步IO和Django的多传输RPC。
项目描述
描述
关于
Radical是一个RPC库,它允许您实现跨服务通信。
它可以作为Celery的替代品。
Radical与Django有开箱即用的集成,也支持asyncio,但也可以不使用它。
Radical可以很容易地通过自定义传输和序列化器进行扩展。
可用传输
Redis
Postgres
默认和推荐传输是Redis。
可用序列化器
JSON
Pickle
默认和推荐序列化器是Pickle。
术语表
术语 |
含义 |
---|---|
服务 |
使用Django、Sanic或纯Python编写的完全自主的应用程序。 |
传输 |
提供实际网络通信接口的模块:例如,Redis传输。 |
序列化器 |
提供数据序列化和反序列化接口的模块。 |
快速开始
安装
pip install radical-rpc
与Django一起使用
将Radical添加到INSTALLED_APPS
INSTALLED_APPS = [ # ... 'radical', # ... ]
配置Radical
RADICAL_CONFIG = { 'TRANSPORT_URL': 'redis://redis:6379/0?request_timeout=10', 'QUEUE_NAME': 'myapp', 'MODULES': [ 'radical.demo' ] }
在任何地方调用它
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.'))
启动Radical工作进程
./manage.py radical