dirt是构建python应用程序的综合框架,python应用程序是面向服务架构的一部分

dirt的Python项目详细描述


dirt提供构建长时间运行的python所需的所有工具 可以通过rpc进行通信的应用程序(“服务”)。

具体来说,它提供:

  • 通过rpc公开方法的工具(使用脏的自定义协议或 zerorpc,包括类似ipython tab completion的nicity)。
  • 一个框架,用于创建长时间运行的应用程序,并公开它们 方法。
  • 在一个终端上运行多个应用程序的工具 开发或生产中。
  • 用于定义应用程序的简单语法(当前为django样式 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'

一些注释:

    {Tt1}$与其他人很好地结合,很容易集成到现有的项目中。 请参阅django项目的example_project/目录,该项目使用 dirt
  • dirt依赖于gevent==1.0。从理论上讲 应用程序使用操作系统线程,但这还没有经过测试。

开发状态

dirt被luminutics在生产环境中使用,并且 在过去的六个月里非常稳定。

也就是说,可能会有一些未经证明的假设 影响其他用户,因此在信任它之前应该进行一些测试 在您的生产环境中。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
安卓中通过TCP发送时java文件损坏   Java测试预期=异常失败,断言错误   java ssh4 LazyInitializationException   java是否可以在集合中添加重复项?   java是一个免费的开源数据库管理工具   java是否可以在导出的html中嵌入图像   编译器构造解释一些东西,并用Java运行生成的字节码?   java KeyPairGenerator未生成随机密钥   java使用正则表达式生成字符串而不是匹配字符串   java中的多线程线程间通信   具有复合密钥的java Hibernate合并问题   java不能在MainActivity类之外使用SharedReferences变量   正在获取切割/零件异常消息。使用java Spring ControllerAdvice   java tomcat漏洞讨论   javascript在Java中实现“system”命令   java如何在JUnit5*中加载*Spring测试上下文之前获取回调?   java bluej关于缺少返回语句   JavaSpringBoot@ModelAttribute包含使用字符串键的其他模型   从可选中抛出异常。ifPresent()Java 8