【发布时间】:2017-10-11 10:35:59
【问题描述】:
出于自学目的,我尝试学习 Elixir 并围绕 GenStage 图书馆转转。
我阅读了大部分文档并获得了它,但是我对我的特定域有几个问题。
我尝试构建一个网络抓取工具,它应该每天启动几次并进行一些抓取和后处理。
第一个问题
所以,我的最高生产者是 Stage,它发出 HTTP 请求并将它们传递给消费者。
这里如何处理“等待 6 小时”?
我应该只接受请求,但向消费者发送空事件吗?这听起来像是在浪费 CPU 周期。
也许,GenStage 不是处理此类事件的正确方法?
第二个问题
有时我需要将事件返回到链中。
-
ProducerConsumerA加载页面#n -
ProducerConsumerB解析页面并将页面上找到的项目的事件发送给下一个消费者。但它也应该为下一页发送ProducerConsumerA的事件(如果结果是分页的)
【问题讨论】:
-
如果您要等待 6 小时 - 即在您的计算机上运行 Erlang VM 6 小时 - 启动您的 elixir 程序的 cron 作业可能会更有效。