gpt4 book ai didi

amazon-web-services - 在 Amazon SWF 中,我可以滥用决策任务来实际执行工作吗

转载 作者:行者123 更新时间:2023-12-01 02:24:20 24 4
gpt4 key购买 nike

我需要 Amazon SWF 来分发一些工作,确保它是异步完成的,确保它以可靠的方式存储并自动重新启动。但是,我需要的工作流逻辑非常简单:它只是执行单个任务。

我现在按照它应该完成的方式实现它:

  • 请求工作流执行
  • 决策者发现并安排事件
  • 工作人员了解事件请求,执行结果并返回结果
  • 决策者注意到结果并将其复制到工作流完成中

  • 在我看来,我可以让决策者完成工作——就像它一样——并立即完成工作流执行。那会照顾 很多的代码。 (事件也可能会失败、超时等。我目前需要满足的所有事情。)

    所以回到我的问题:我可以有一个决策者自己执行工作并立即完成“工作流程”吗?

    最佳答案

    是的。实际上,我认为您提出了一个有趣的用例:使用最小工作流作为分布式系统中一次性操作的集中锁定机制 - 例如从多个主机中的单个主机执行的 cron 作业(主机具有首先进行选举,赢得锁的人将执行操作)。使用 Amazon SWF 和最少的代码可以实现相同的效果:

    一个小的 Python 示例,使用 boto.swf (使用 1. from this post 来设置域):

    对决策者进行编码:

    #MyDecider.py
    import boto.swf.layer2 as swf

    class OneShotDecider(swf.Decider):

    domain = 'stackoverflow'
    task_list = 'default_tasks'
    version = '1.0'

    def run(self):
    history = self.poll()
    if 'events' in history:
    decisions = swf.Layer1Decisions()
    print 'got the decision task, doing the work'
    decisions.complete_workflow_execution()
    self.complete(decisions=decisions)
    return False
    return True

    启动决策程序:
    $ ipython -i decider.py
    In [1]: while OneShotDecider().run(): print 'polling SWF for decision tasks'

    最后,启动工作流程:
    $ ipython
    In [1]: wf_type = swf.WorkflowType(domain='stackoverflow', name='MyWorkflow', version='1.0', task_list='default_tasks')

    In [2]: wf_type.start()
    Out[2]: <WorkflowExecution 'MyWorkflow-1.0' at 0x32e2a10>

    回到决策器窗口,您将看到如下内容:
    polling SWF for decision tasks
    polling SWF for decision tasks
    got the decision task, doing the work

    如果您的工作流可能会发展其业务逻辑或增加事件数量,那么最好坚持让决策者执行业务逻辑并让工作人员解决任务的标准方式。

    关于amazon-web-services - 在 Amazon SWF 中,我可以滥用决策任务来实际执行工作吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17819250/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com