我想创建一个类似这样的管道:
HttpGetHtmlFromA --|
|--> ExtractComments --> ExtractKeywords --> NotifyOverHttp
HttpGetJsonFromB --|
在这方面,我有两种不同的方法,我很想知道哪种方法最适合这项任务。在
第一种方法是利用线程,上面的每一个操作(即gethtmlproma、GetJsonFromB、ExtractComments等)都在各自独立的线程上运行。为了传递数据,管道的每个集成点之间将有三个不同的队列。在
我心目中的后一种方法将以异步方式执行所有操作。上面的操作将被表示为单独的任务,每个任务在异步事件循环中无限期地运行。数据仍将通过队列传递。在
虽然我倾向于异步设计,但我不确定什么是最有效的。请注意,httpgethtmlproma和HttpGetJsonFromB是轮询url的生产者。在执行各自的http请求后,它们将延迟约10秒,然后再发出后续的http请求。这似乎很适合异步模型,因为它允许在轮询之间进行一些工作。也就是说,ExtractComments和ExtractKeywords有可能是长时间运行(主要是)CPU限制的任务,用于解析传入的内容。在
不管怎样,我很想听听你对这件事的看法:线程与协同程序。有没有一种我没有考虑过的完全不同的方法?在
目前没有回答
相关问题 更多 >
编程相关推荐