Как правильно оценивать функцию каждую минуту, используя at-at
и chime
?Использование планировщиков clojure
Вот мои тесты:
(require '[overtone.at-at :refer :all]
'[chime :refer [chime-at]]
'[clj-time.periodic :refer [periodic-seq]]
'[clj-time.core :as t])
;; 1. Use of future
(defonce data1 (atom {:num 1}))
(defonce updater
(future
(while true
(swap! data1 update-in [:num] inc)
(Thread/sleep 60000))))
;; 2. Using at-at
(defonce data2 (atom {:num 1}))
(def my-pool (mk-pool))
(every 60000 #(swap! data2 update-in [:num] inc) my-pool)
;; 3. Using chime
(defonce data3 (atom {:num 1}))
(chime-at (periodic-seq (t/now) (-> 60 t/seconds))
(fn [] (swap! data3 update-in [:num] inc))
{:error-handler (fn [e] (str e))})
Через 5 минут:
@data1
;;=> {:num 5}
@data2
;;=> {:num 8}
@data3
;;=> {:num 1}
Почему at-at
рассчитывает поститься? Почему chime
не учитывает вообще?
Спасибо!
Спасибо, теперь он работает прекрасно. Что касается 'at-at', мне нужно добавить': fixed-delay true' в конце вызова. – leontalbot