span8
span4
我有一个FME服务器自动化,触发作为一个时间表,有这些基本步骤:
步骤(2)中的解码位从路径读取器获取其文件输入,可能需要一些时间才能完成,因此我在4个引擎的FME服务器队列上并行运行工作区。
我的问题是,一旦4个引擎中的一个可用,自动化就会转移到步骤(3)。步骤(3)和步骤(4)在其余3个引擎运行步骤(2)完成之前快速完成。这个结果是3个文件在自动化完成后到达staging文件夹(B)。
问题:有没有一种“简单”的方法来实现自动化等待直到步骤(2)在所有4个引擎上完全完成,然后移动到步骤(3)?
自动化合并看起来很有希望,但是我必须将步骤(2)中的路径读取器的输出分割为4个工作空间,并使用类似采样器的东西来分割文件提要。
我考虑过使用减速机和/或FMEServerJobWaiter,但似乎都不是很优雅——有什么想法吗?
问候
迈克
嗨@摩伯德里,
所有这些步骤目前都是由一个时间表触发的吗?如果您不希望在步骤2完成之前运行步骤3,那么为什么不考虑在自动化中链接这些作业,以便只在步骤2成功完成时将步骤3中的工作空间发送到队列中运行呢?这样,任务就不会在队列中等待,所以即使引擎空闲也没有关系。
是的,自动化是从一个计划触发的,并且正在运行的工作区位于同一个存储库中,该存储库被分配给一个队列。
您会说“为什么不考虑在自动化中链接这些作业,以便步骤3中的工作区将只发送到队列,以便在步骤2成功完成时运行?”-您能否详细介绍一下我将如何做到这一点,而不牺牲在步骤2并行处理4个引擎的能力。
实际上,我在这里寻找的是一个自动功能保持器。
我认为意大利下面的解决方案可能会奏效——我会调查的。
迈克
嗨@摩伯德里,
如何并行提交步骤2?您只是在自动化中有组成步骤2的多个运行工作区操作,还是只有一个父工作区将二进制文件路径馈送到FMEServerJobSubmitter转换器中以并行运行它们?如果是后者,这就是我的思维过程。
自动化:
工作历史:
如果是前者,那么您是对的,合并操作是最接近FeatureHolder想法的,但是听起来这不符合您的需要,因为您不能像您希望的那样将信息传递到路径读取器中?你能分享一张到目前为止你的自动化设置的截图吗?我看看能不能为你想出其他的主意?
考虑到您不希望第3步中的工作区在第2步完成之前运行,我不确定设置作业优先级是否会得到所需的结果。作业优先级是根据每个存储库设置的,允许您在作业进入队列后控制它们的运行顺序。但是,为了防止步骤3过早运行,您必须将其分配给一个队列,该队列具有一个引擎,您可以保证它将是步骤2中运行作业的最后一个队列-否则,您仍然会遇到相同的问题,即一旦引擎空闲,作业将运行。步骤2中是否总是有一个作业需要最长的运行时间?
嗨@摩伯德里,
好吧,你确实按照我最初的想法做了。在主工作区中,如果您使用的是FMEServerJobSubmitter,请尝试设置等待作业完成= Yes,这样在所有子作业完成之前主转换都不会完成,因此步骤3不会在早期被触发。
Nope-步骤2有一个以路径读取器开头的工作区-传递的每个功能都是一个“待解码”的文件。这些文件是从“staging folder”中读取的,步骤2中的解码过程复杂且耗时,因此出于性能原因,我们将其分布到4个引擎中,即。我们一次处理4个文件,4个作业在4个独立引擎上并行运行。没有文件大小相同,因此作业在不同的引擎上完成的时间不同。当我们到达staging文件夹中的最后4个文件时,一个文件将比其他文件更快地被解码,这意味着引擎可用。该引擎不是等待其他引擎完成,而是转到步骤3,而步骤2仍在处理中。这是不需要的行为,因为这意味着在自动化完成后仍在生成步骤2输出。有道理?
嗨@摩伯德里,
是的,我理解您试图克服的问题,但是如果您没有使用JobSubmitter或Rest API,我很难理解如何并行提交作业。使用路径读者将允许您通过一个工作流运行多个文件如果你主人工作区并不是推出额外工作这仍将运行在一个引擎通过一个工作,所以你的工作并行运行多个引擎从这个单一亚搏在线的自动化?
也许它可能更容易跳转到一个调用,以便我可以查看您的主工作区。如果你认为这是有帮助的,那么请通过提交一个案例亚搏在线安全软件支持在主题中加入“Attn Holly”。
我的坏荷莉-你说得对,第二步是一个主工作区,通过FMEServerJobSubmitter调用一个孩子。FMEServerJobSubmitter设置为“并行运行”,这允许我们在4个独立引擎上运行子工作区的4个实例。在引擎盖下,主工作区(步骤2)如下所示:
FMEJServerJob提交程序的配置如下:
嗨,霍莉-最后我决定修改我的主工作区并重新发布。如果我使用ModuloCountertransformer我可以将来自路径读取器的文件分成4个单独的流。然后,每个流都可以调用FMEServerJobSubmitter(这次以系列方式运行)。我可以放一个FeatureHolder4x FMEServerJobSubmitter transformers下游的转换器,它将确保在进入FME服务器自动化的下一步之前完成所有作业。这仍然会导致4个实例的子工作区在4个引擎上的FME服务器上运行,给了我所需的并行处理。
©2019安全亚搏在线软件公司法律