两个定时触发器在同一个工作流当中,其中一个不触发

我有一个工作流,存在两个定时触发器,其中一个可以每日在设定时间触发,另一个无法触发,手动测试没问题。 log 里边也确认,每天只有触发器 被trigger.
请问目前dify 支持 同一个工作流“多触发器并行运行” 吗?
谢谢

@Dify_Forum_Helper 帮助

目前 Dify 工作流里的「定时触发器」设计上是支持在一个工作流中放多个触发器的,但有几个容易踩坑的点,会导致你描述的现象:一个能按时触发,另一个只能手动测成功、但不会按计划执行。

先说明结论:

  • 概念上支持「一个工作流多触发器并行运行」;
  • 但在当前版本中,在定时触发上可能存在一些限制 / bug 或配置细节问题,实际效果往往是「只有一个在跑」。下面给你几个排查方向和一个稳妥的推荐方案。

一、先确认的几个关键点

你可以先逐项对照检查下:

  1. 两个定时触发器的启用状态

    • 都有没有被「禁用」?界面里一般有 enable/disable 或开关。
    • 有时复制节点后,新的定时触发器默认是关闭或未保存。
  2. 时间配置是否冲突 / 重叠

    • 比如:
      • 一个是「每天 10:00」,另一个也是「每天 10:00」甚至很接近;
      • 有的调度实现会对同一工作流在同一时刻的多条计划做「合并」或「只保留一个」。
    • 建议先做个测试:把第二个触发器改到完全不同的时间点(例如一个 10:00,一个 10:05),看第二个是否能正常跑。
  3. 时区问题

    • Dify 的定时任务是按哪一个时区执行的?
    • 如果你的服务器 / Dify 配置不是 Asia/Shanghai,而你在界面里是按本地时间理解的,有可能其实已经触发了,只是你看错了时间点。
    • 对比一下:
      • 定时触发器的配置时间
      • 日志里触发的时间
        确认是否存在 8 小时 / 若干小时偏差。
  4. 触发日志中是否能区分两个触发器

    • 一般每个 trigger 节点会有自己的 ID/name,你在 log 里看到的「每天只有一个被 trigger」:
      • 是确实只看到一个节点的记录,还是两个节点都跑了但后面的流程合并了?
    • 如果能的话,给这两个定时触发器起明显不同的名字,方便在日志里检索。
  5. 是否使用了同一个「入口」下游节点

    • 比如两个定时触发器都连到同一个下游节点,而这个节点或后续节点有某种「互斥」逻辑(比如单例任务、锁、限流),那表现上就像只有一个在跑。

二、当前可能存在的设计限制 / 实现细节

在部分版本 / 实现中,调度器对「同一个工作流的多个 schedule」有可能:

  • 对同一 app / workflow 做「单条 schedule 绑定」,导致只有第一个配置生效;
  • 或者 scheduler service 有 bug,导致多个 cron 只生效一个;
  • 又或者有最大并发任务防重入限制:
    • 例如某个时间点工作流已经在执行中,调度器会跳过新的触发,以避免同一 workflow 重入;
    • 如果第一个触发器运行时间较长,第二个在同一时间窗口触发就会被跳过。

因为我现在无法直接查版本对应的源码和 issue 列表,只能基于通用的工作流调度实现来推测。
稳妥起见,你可以当下这样理解:设计目标是支持多定时触发,但某些版本/场景下行为不完全稳定或只生效一个


三、推荐的稳定解决方案

为了不被这些实现细节坑到,给你两个实践上更稳的方案。

方案 A:拆成两个工作流,各一个定时触发器

  1. 把现在的工作流逻辑拆成:
    • 工作流 A:只保留「定时触发器 A + 对应分支逻辑」;
    • 工作流 B:只保留「定时触发器 B + 对应分支逻辑」。
  2. 各自单独配置定时任务。
  3. 这样调度上是两个完全独立的计划任务,互不影响。

优点:

  • 最直观、最少踩坑;
  • 日志和问题排查非常清晰:哪个没跑,一眼能看出来;
  • 不依赖当前版本对「同一工作流多个 scheduler」的具体实现。

方案 B:保留一个定时触发器,用「路由/条件节点」在内部区分

  1. 在工作流入口只保留一个「定时触发器」;
  2. 在定时触发后,接一个「条件判断 / Router 节点」:
    • 在这里根据「当前时间 / 日期 / 自定义变量」来判断走哪一条支路:
      • 比如:
        • 每天 10:00 触发一次
        • 在工作流里判断:如果今天是工作日 → 走路径 1;否则 → 走路径 2。
        • 或者按日期模 2、模 7、周几等条件分流。
  3. 如果你希望每天固定两个不同的时间点跑两条逻辑,可以:
    • 一个定时触发器频率稍高(比如每半小时执行,但在内部条件里只有满足 10:00 ±某分钟窗口才跑「逻辑 A」,满足 15:00 ±某分钟窗口才跑「逻辑 B」),其他时间分支直接结束。

优点:

  • 完全规避「多个定时触发器」本身的调度兼容性问题;
  • 所有逻辑集中在一个 workflow,便于维护和查看全局状态。

四、你可以帮忙确认 / 补充的信息

如果你愿意继续排查,可以补充这几项信息,我可以帮你更具体地推断原因:

  1. 你的 Dify 版本号(在设置页或 docker-compose 里可以看到镜像 tag)。
  2. 两个定时触发器的具体配置方式(例如:
    • Trigger 1:每天 10:00
    • Trigger 2:每天 18:00
      时区设置如何?
  3. 日志中有没有看到第二个 trigger 节点的任何执行记录(节点名/ID 截图或文字描述即可)。
  4. 两个触发器下游是不是共享了一部分节点,还是完全独立的两条链路?

总结

  • 理论上:Dify 是支持「同一工作流存在多个触发器」的。
  • 你当前遇到的情况,很可能是调度层面对「同一工作流多个定时触发」存在限制 / bug,或者配置上有时间冲突、时区等问题,导致落实到运行时只有一个在触发。
  • 在官方明确多 scheduler 行为之前,推荐优先用「拆成两个 workflow」或「一个定时触发 + 内部路由」的方式实现多计划任务,这在实际生产里更稳。

如果你方便的话,可以先试一下「拆成两个工作流」这个方案,看是否两个都能按计划触发,再告诉我结果,我们再看是不是值得提一个 issue 让官方修。