当前位置: 首页 > 知识库问答 >
问题:

Cadence:更改工作流cron时间表的最佳实践是什么?

刘才俊
2023-03-14

我们有一个使用基于cron的调度的工作流程。我们需要支持一个用例来更改cron表达式。

这样做的最佳做法是什么?

共有1个答案

程正阳
2023-03-14

使用相同的工作流ID再次启动相同的cron工作流,IDReusePolicy=TerminteIfRunning

就像在留档中一样,CRON只有在取消或终止时才会停止。所以你也可以终止/取消,然后开始一个新的。但是如果你用两个请求自己做,就没有一致性保证了。

使用 IDReusePolicy = TerminteIfRunning 将确保终止启动是 Cadence 中的原子操作。

这里是使用它的例子

1.开始一个你好世界的工作人员

./bin/helloworld -m worker &
[1] 24808
2021-03-22T20:08:09.404-0700    INFO    common/sample_helper.go:97  Logger created.
2021-03-22T20:08:09.405-0700    DEBUG   common/factory.go:131   Creating RPC dispatcher outbound    {"ServiceName": "cadence-frontend", "HostPort": "127.0.0.1:7933"}
...
...
$./cadence  --do samples-domain wf start --tl helloWorldGroup -w "test-cron" --execution_timeout 10 --cron "* * * * *" --wt "main.helloWorldWorkflow" -i '"Hello"'
Started Workflow Id: test-cron, run Id: 2d9f06f9-7e79-4c9d-942a-e2c6a20c9f85
$./cadence  --do samples-domain wf start --tl helloWorldGroup -w "test-cron" --execution_timeout 10 --cron "* * * * *" --wt "main.helloWorldWorkflow"  -i '"Cadence"'  --workflowidreusepolicy 3 
Started Workflow Id: test-cron, run Id: 4344448d-5a95-4a91-a56e-ebc0b93b4d29

请注意,在CLI中:< code >-workflowidreusepolicy 3 将设置IDReusePolicy = < code > TerminteIfRunning

CLI用法将在此PR之后更新。

$2021-03-22T20:24:00.307-0700   INFO    helloworld/helloworld_workflow.go:29    helloworld workflow started {"Domain": "samples-domain", "TaskList": "helloWorldGroup", "WorkerID": "24808@IT-USA-25920@helloWorldGroup", "WorkflowType": "main.helloWorldWorkflow", "WorkflowID": "test-cron", "RunID": "1e2e6d2f-dcc7-410f-8d06-81c94622bbb7"}
2021-03-22T20:24:00.307-0700    DEBUG   internal/internal_event_handlers.go:470 ExecuteActivity {"Domain": "samples-domain", "TaskList": "helloWorldGroup", "WorkerID": "24808@IT-USA-25920@helloWorldGroup", "WorkflowType": "main.helloWorldWorkflow", "WorkflowID": "test-cron", "RunID": "1e2e6d2f-dcc7-410f-8d06-81c94622bbb7", "ActivityID": "0", "ActivityType": "main.helloWorldActivity"}
...
 类似资料:
  • 问题内容: 我刚开始学习Go,并通读现有代码以学习“其他人的做法”。在这种情况下,遍历使用go“工作区”,尤其是与项目依赖关系有关的地方。 在处理各种Go项目时,使用一个或多个Go工作区(即$ GOPATH的定义)的常见(或存在)最佳实践是什么?我应该期望有一个类似于我所有项目的中央代码存储库的Go工作区,还是在我处理这些项目时都明确将其分解并设置$ GOPATH(有点像python) virtu

  • 问题内容: 背景 我的小组有4个SQL Server数据库: Production UAT Testing Developer 我在开发环境中工作。当需要提升我一直在处理的对象(表,视图,函数,存储的过程)的时候,我向经理提出了要求,经理将其提升为Test。经过测试后,她向提升为UAT的管理员提交了请求。在成功进行用户测试之后,同一管理员将晋升为正式生产。 问题 出于某些原因,整个过程很尴尬。 每

  • cadence默认使用的时区是什么? 我们如何根据时区更改cron表达式?例如,如果用户从不同的时区输入cron时间表,而不是卡顿的服务器时区,假设用户在格林尼治标准时间5每天下午1点输入,那么它应该在服务器上午9点运行(假设卡顿的服务器时区仅为格林尼治标准时间)。 我正在使用golang cadence客户端编写工作流。感谢任何帮助。

  • 我希望在我工作的公司里从SVN转到Git。我面临的问题是如何让我的头脑围绕一个体面的工作流程。 通常,对于处于启动后状态的PHP项目,客户端会为一些带有ID(smeg23452)的工作创建票证。在SVN中,我们通常会将票证ID放在开发分支的每次提交中,然后挑选这些更改并将它们放入主干。没关系,但是有时合并失败,或者开发人员未能将票证号与工作相对应。 在理想情况下,我希望能够在Git中为票证建立一个

  • 在我的工作流和活动中,我想记录一些消息以进行调试。 我看到了< code >的节奏。GetLogger(ctx)。Info()函数,但是不知道在哪里可以找到日志。

  • 问题内容: 我正在构建一个基于expressjs的应用程序,我想在其中记录所有事件。我可以找到温斯顿,这似乎很酷。无论如何,我正在寻找一种方法将其连接到我的expressjs应用程序。 我还想要在应用程序内部登录。我的要求不是那么简单,所以我想将所有内容记录在我的应用程序中(不仅是请求)。 我目前的情况: server.js (我想在此级别记录http请求) 路线/something.js con