如何自动启动Dagster Schedule 无需在Dagit中手动开启调度
Dagster 调度自动启动解决方案
前置依赖确认
- 首先保证
dagster-daemon服务正常运行,Dagster 所有调度规则的执行都依赖该服务,你可以执行命令dagster-daemon run启动服务,生产部署时建议配置为系统自启后台服务。
方案1:单调度默认启动配置(推荐)
直接在调度定义中指定默认运行状态,无需手动到Dagit中开启,修改后的代码如下:
首先新增导入依赖:
from dagster import solid, pipeline, schedule, repository, DefaultScheduleStatus
调整调度装饰器参数,新增default_status配置:
@solid() def test(context): context.log.info("test") @pipeline() def testPipeline(): test() @schedule( cron_schedule="* * * * *", pipeline_name="testPipeline", execution_timezone="Asia/Kolkata", # 新增以下配置项 default_status=DefaultScheduleStatus.RUNNING ) def scheduleTest(): return {} @repository() def testRepo(): return [testPipeline, scheduleTest]
该配置仅对当前调度生效,后续如果需要临时关闭调度,依然可以在Dagit中手动调整状态。
方案2:全局调度默认启动配置
如果需要所有新增调度默认都自动启动,可以修改Dagster实例的dagster.yaml配置文件,添加以下内容:
schedules: default_status: RUNNING
该全局配置的优先级低于单个调度的default_status参数,适合批量管理大量调度的场景。
生效说明
配置修改完成后需要重启dagster-daemon和Dagit服务,重新加载仓库代码后配置即可生效。如果对应调度之前已经有手动关闭的历史记录,需要手动删除该调度的旧状态记录,或手动在Dagit中切换为运行状态后新配置才会生效。
内容的提问来源于stack exchange,提问作者ZeroThree
相关产品推荐
相关产品推荐

