原创文章第145篇,专注“个人成长与财富自由、世界运作的逻辑,AI量化投资"。 Dagster 是一个编排器,旨在开发和维护数据资产,例如表、数据集、机器学习模型和报告。 您声明要运行的函数以及这些函数生成或更新的数据资产。然后,Dagster 会帮助您在正确的时间运行您的功能并让您的资产保持最新。 Dagster 旨在用于数据开发生命周期的每个阶段——本地开发、单元测试、集成测试、暂存环境,一直到生产。 这与我上次调研的,似乎已经发生了变化。上次调研时,对比了airflow, prefect和dagster。是按调度平台来调研的。目前看,官方定位是数据编排器。看起来与大数据、AI项目相关,这倒与AI量化投资可以契合。现在它的核心概念是“数据资产”。 Prefect也进行了大改版,易用性提升了不少。当然,它仍然是一个“去中心化”的调度器,就是server端只负责记录,worker自己启动后去消费队列。对比而言,dagster往更复杂的方向去了,引入了assets为核心,加上了“物化”的概念,云里雾里的。 python生态的web框架,以django, flask和fastapi为代表。django是快速交付的代表,分分钟建一个自带后端的系统,几行代表就够了。但你想替换它原生的组件,比如想使用no sql数据库,如mongo就比较费劲,或者换一个模板引擎,比如Jinjia2,都比较麻烦。另外就是考虑到分布式、高并发的场景,那么传统后端session的模式基本就没有用了,另外对于事务的支持,连接池的支持,这些使用django就比较麻烦了。django最强的两大组件,一是orm;二是admin。但它的admin与orm绑定太紧了。若有定制需求,要突破也不容易。 flask以“微内核”架构,它基本可以“拼装”出一个django,好处是,有很多组件供选择。 当下更多的场景以“前后端分离为主”,后端提供api。那么fastapi优于flask。它自动参数校验,完美整合swagger,原生异步框架等。 ORM今天我来试一下peewee。 pip install peewee peewee很小,才800多k,sqlalchemy使用繁琐,不那么pythonic。 有时候想想,是否一定要用orm,尤其是一上来就学习orm的同学,离开了orm便不会操作数据库了。其实纯粹的sql操作,也没有多复杂,只是麻烦罢了,早年我们写代码,都会自己封装一层db的操作。 把orm当成自动表结构与python的model对象关联,同时它的playhouse也提供手动migrations。其实这样挺好,自动migrate 使用docker-compose 将mongo与mysql启动: version: '3' 使用docker一样简单,只不过mongo的密码与用户在终端里管理,而mysql是直接在环境变量里配置。 实例化一个MySQLDatabase,然后把它作为BaseModel的Meta的database的值。 db = MySQLDatabase(database=database, host=host, port=port, user=user, passwd=passwd) Users用户表继承自BaseModel都会与数据库里的Users表自动关联。 class Users(BaseModel): 代码非常简洁,但这里有些问题: 连接池的管理,事务如何处理? db = SqliteDatabase(':memory:') 连接池: # 同步数据库连接池 peewee很简洁,代码也很容易看明白。
|
|