Fork me on GitHub
#missionary
<
2023-11-08
>
J16:11:12

Hi! Is this ok to run background process with schedule time like this:

(def run-job
  (->> (m/ap
         (m/?> (m/seed (range)))
         (m/? (m/via m/blk (process-data)))
         (m/? (m/sleep 5000)))
       (m/reduce {} nil)))

(def cancel-job
  (run-job (fn [_] (tap> "run"))
           (fn [_] (tap> "cancel"))))

leonoel17:11:16

That's fine. If you have many global processes of that kind I recommend grouping them with m/join

thanks3 1
J17:11:51

Like this?

(def run-jobs
  (m/join {} run-job run-job))
`

J16:11:51

Hi! what about this code to run a task periodically?

(defn worker [task interval]
    (m/sp
      (loop []
        (m/? (m/via m/blk (task)))
        (prn "DO SLEEP")
        (m/? (m/sleep interval))
        (recur))))

  (def run-worker
    (worker (fn []
              (prn "PROCESS...")
              (Thread/sleep 5000)
              (prn "DONE!"))
            2000))

  (def cancel-worker
    (run-worker #(prn %) #(prn %)))

  (cancel-worker)
Here sp is ok or should I use ap instead?

leonoel16:11:41

they're equally good

J16:11:15

Thanks again!