dirt 是一个用于构建服务导向架构中 Python 应用程序的全面框架
项目描述
dirt 提供了构建长运行 Python 应用程序(“服务”)所需的全部工具,这些应用程序可以通过 RPC 进行通信。
具体来说,它提供
用于通过 RPC 暴露方法的工具(使用 dirt 自定义协议或 ZeroRPC,包括诸如 iPython 选项卡完成之类的便利功能)。
用于创建长运行应用程序的框架,并通过 RPC 暴露其方法。
用于在一个终端中运行多个应用程序的工具,无论是用于开发还是生产。
定义应用程序的简单语法(目前最好支持 Django-style settings.py 文件,但 .ini 也容易支持)。
一个应用程序可以像这样简单
$ cat app.py import gevent import logging from dirt import DirtApp, runloop log = logging.getLogger(__name__) class PingAPI(object): def ping(self): return "pong" class PingApp(DirtApp): def get_api(self, edge, call): return PingAPI() class LongRunningApp(DirtApp): @runloop(log) def serve(self): ping_app = self.settings.get_api("ping") while True: result = ping_app.ping() log.info("ping: %r", result) gevent.sleep(1) $ cat settings.py from dirt import logging_default USE_RELOADER = False DIRT_APP_PIDFILE = "/tmp/dirt-example-{app_name}.pid" LOGGING = logging_default("/tmp/dirt-example-{app_name}.log", root_level="INFO") class PING: app_class = "app.PingApp" bind_url = "zrpc+tcp://127.0.0.1:9990" remote_url = bind_url class LONG_RUNNING: app_class = "app.LongRunningApp" $ ./run ping long_running 23:20:21.289 ping INFO dirt.app: binding to zrpc+tcp://127.0.0.1:9990... 23:20:21.477 long_running INFO app: ping: 'pong' 23:20:22.380 long_running INFO app: ping: 'pong'
一些笔记
dirt 与其他工具兼容良好,可以轻松集成到现有项目中。请参阅 example_project/ 目录,其中包含使用 dirt 的 Django 项目。
dirt 依赖于 gevent==1.0。理论上,应用程序可以使用操作系统线程,但这尚未经过测试。
开发状态
dirt 已在 Luminautics 的生产环境中使用,并且在过去六个月内非常稳定。
话虽如此,可能存在一些未经文档化的假设,可能会影响其他用户,因此在您的生产环境中信任它之前,应进行一些测试。
项目详情
关闭
dirt-0.2.1-unstable.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bc95d4d684107570dd9981d0d2d1ae0e7f4a6249bda92542014ff6d3c1a7120d |
|
MD5 | e5172042a44af9b75d8add296d8dfa12 |
|
BLAKE2b-256 | 97a4d7e3438394148cff69bd567bc0181f5f36112ec2380301816b87cac87bae |