即使计算已完成,SWF活动仍未完成

时间:2018-07-19 19:07:57

标签: amazon-web-services amazon-swf

我正在测试一个新的SWF工作流,并且有一些活动可以使RESTful调出另一个服务。问题是,通过日志记录我可以看到完成实际通话所需的时间不到一秒钟,但是活动始终以SWF(5分钟的START_TO_CLOSE)超时。更具体地讲,RESTful调用是列表调用,当我将批处理大小限制为一个较小的数字时,活动将完成并非常快速地进行。但是在某个看似随意的阈值下,它完全阻塞了。

有人对此有任何见识吗?我读过SWF调用的大小限制为1 MB,有人知道如何找到我的工作人员试图通过SWF的数据大小吗?

2 个答案:

答案 0 :(得分:1)

经过一些远程调试后,结果表明任务的响应太大,活动无提示地失败。当框架尝试将响应报告给SWF,并且SDK调用RespondActivityTaskCompleted时,将发生失败。该API对内部result参数有长度限制:

  

长度限制:最大长度为32768。

这是一个验证错误,会引发未捕获的异常,并且会在内部吞下直到活动超时。

答案 1 :(得分:1)

我不建议使用活动输入和输出参数来传递大型数据集。 SWF是一种编排技术,而不是通过数据的数据。标准的解决方法是:

  • 将结果存储在单独的存储中(例如,S3)并传递对其的引用。
  • 在计算机上本地缓存结果,并将以下所有活动路由到同一主机,以使他们可以访问缓存的结果。有关路由方法的详细信息,请参见fileprocessing示例。

顺便说一句。您是否签出了Cadence,它是SWF的开源版本,具有更好的客户端库?