相关疑难解决方法(0)

定期调用Clojure中的函数

我正在寻找一种在Clojure中定期调用函数的简单方法.

JavaScript setInterval有我想要的那种API.如果我在Clojure中重新构想它,它看起来像这样:

(def job (set-interval my-callback 1000))

; some time later...

(clear-interval job)
Run Code Online (Sandbox Code Playgroud)

出于我的目的,我不介意这是创建一个新线程,在线程池或其他东西中运行.时机也是准确的并不重要.事实上,提供的时间段(以毫秒为单位)可能只是一个呼叫结束和下一个呼叫开始之间的延迟.

clojure periodic-task

17
推荐指数
6
解决办法
8299
查看次数

在clojure中实现cron类型的调度程序

我正在寻找任何可以在给定时间触发事件的方法,

例如:我希望特定的流程在上午9:30开始,然后我可以触发另一个流程,半小时后开始运行等.

提前致谢!


更新2:

感谢@亚瑟- ulfeoldt和@未知的人谁也使用建议https://github.com/samaaron/at-at删除他的答案之前.文档有点过时,但这是我的方式.

(use 'overtone.at-at)

(def my-pool (mk-pool))
;=> make a thread pool

(every 1000 #(println "I am super cool!") my-pool :initial-delay 2000) 
;=> starts print function every 1 sec after a 2 sec delay

(stop *1) 
;=> stops it

所以为了让它从正好9开始,间隔半小时,我会做:

(require '[clj-time.core :as t])
(require '[clj-time.coerce :as c])
(use 'overtone.at-at)

;Make Thread Pool
(def my-pool (mk-pool))

(def current-time (t/now))

(def current-date (t/date-time 
                    (t/year current-time)
                    (t/month current-time)
                    (t/day current-time)))

(def next-9-oclock
  (if (> 9 (t/hour …

clojure

9
推荐指数
1
解决办法
2947
查看次数

标签 统计

clojure ×2

periodic-task ×1