Fork me on GitHub
#core-async
<
2020-05-26
>
fabrao03:05:03

Is there any way to stop the processing of this block?

(let [saida (chan)
	  lojas ["STORE-01" "STORE-02" "STORE-03" "STORE-04"]]
    (pipeline-blocking 10
                       saida
                       (map #(do
                               (logger/debug (str "Loja -> " (:servidor %)))
                               (ls/executar-query-linkedserver db (:servidor %) (slurp "sql/semanal/tempo-backup.sql"))))
                       (to-chan lojas))
    (<!! (a/into [] saida)))

fabrao03:05:12

when I have so many "STORE"s, I can´t stop the execution until the end of pipeline-blocking

fabrao03:05:35

is there any way to stop the execution?

danboykis14:05:39

@fabrao do you know how many items in lojas is too many? if so, I would change the implementation of to-chan to a go-loop with a counter and perform close! on lojas when the counter reaches your limit

noisesmith16:05:43

or even just a take n transducer on the channel

fabrao16:05:30

@danboykis lojas will be around 100

noisesmith17:05:09

@fabrao how would you know it's too many? If there's a specific maximum count, you can add a (take N) transducer, if there's a condition you can check via a function call, you can use a take-while transducer that runs your test