出于自我教育的目的,我尝试学习 Elixir 并在GenStage
图书馆周围转转。
我阅读了文档并得到了大部分内容,但是我对我的特定领域有几个问题。
我尝试构建一个网络抓取工具,它应该每天启动几次并进行一些抓取和后处理。
第一个问题
所以,我最顶层的生产者是一个Stage
发出 HTTP 请求并将它们传递给消费者的。
我如何在这里处理“等待 6 小时”?
我应该只接受需求,但将空事件发送给消费者吗?这听起来像是在浪费 CPU 周期。
也许,GenStage
对于此类事件不是正确的方法吗?
第二个问题
有时我需要将事件返回到链中。
ProducerConsumerA
加载页面#nProducerConsumerB
解析页面并将页面上找到的项目的事件发送给下一个消费者。ProducerConsumerA
但它也应该为下一页发送一个事件(如果结果是分页的)