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 |