gpt4 book ai didi

c# - TPL 数据流选择阻止将项目发布到其中

转载 作者:太空狗 更新时间:2023-10-30 01:19:19 27 4
gpt4 key购买 nike

请看下面我的 TPL Dataflow 网络方案。有一个 URL 列表、多个 Load block 和一个 Parse block 。Load block 使用不同的代理服务器加载 HTML 页面,并且所有这些都链接到 Parse block ,在 Parse block 中发生 CPU 密集型工作。如果在页面加载期间出现异常,URL 将添加回列表。

我将 URL 发布到 Load blocks with a hand-made cycle(在图片上)。我的问题:是否有任何 block 类型可以帮助选择加载 block 以将 URL 发布到而不是我的手工循环?例如,它会将 URL 发布到第一个使用 .InputCount <=2 加载时钟。

还有一个。代理服务器在 Dataflow 执行期间可能变得不可用。我想如果我放置一个 BufferBlock 而不是 URL 列表,那么如果有这样的能力,我将能够从这个 BufferBlock 动态取消链接 LoadBlocks 与死代理。那么有没有办法动态取消 block 与网络的链接?

Dataflow network scheme

最佳答案

Is there any block type, that can help with choosing Load block to post URLs to instead my hand-made cycle? For example it will post URLs to first Load clock with .InputCount <=2.

您可以做的是拥有一个链接到所有加载 block 的 BufferBlock。然后,您可以将加载 block 的 BoundedCapacity 设置为 3(正在处理的 1 个项目 + 输入和输出队列中的 2 个)。使用此设置,项目将在 BufferBlock 中等待,直到其中一个加载 block 中有可用空间。

is there a way to dynamically unlink blocks from network?

是的,LinkTo()返回可用于破坏该链接的 IDisposable(通过调用 Dispose())。

关于c# - TPL 数据流选择阻止将项目发布到其中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23395858/

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