我的流程类似于:
all_feed_ids
|> Flow.from_enumerable
|> Flow.map(&download_feed)
|> Flow.flat_map(&extract_feed) # Creates many items per feed
# |> Flow.map_state(&bulk_insert_items)
|> Flow.map(&download_item)
|> Flow.flat_map(&extract_item) # Creates many sub-items per item
# |> Flow.map(&bulk_insert_subitem)
This thread建议使用Flow.map_state
,但似乎不再存在。
结果,我在每个Flow.map_state中使用了以下位置:
|> Flow.partition(window: Flow.Window.count(@bulk_insert_size), stages: 1)
|> Flow.reduce(fn -> [] end, fn item, list ->
[item | list]
end)
|> Flow.on_trigger(&bulk_insert_items)
|> Flow.partition()
这是合理的方法吗,或者还有其他功能或首选方法可以用Flow来做到这一点(或者这可能甚至不是合适的Flow用例)?
答案 0 :(得分:2)
Flow.map_state/2
has not gone。根据{{3}}:
each_state/2
和map_state/2
—仅在有触发器时才调用这两个函数,现在已被更明确命名的on_trigger/2
函数所代替。
我没有使用CHANGELOG
查看或尝试过您的代码,但对我而言,后者在我的本地项目中曾以类似的方式工作过。