Clojure / Jetty Web サービスに取り組んでいます。一度に 1 つのリクエストのみを処理する特別な URL があります。URLがリクエストされ、それが戻る前に再度URLがリクエストされた場合、すぐに戻りたいです。したがって、ルートを定義したより多くのcore.cljには、次のようなものがあります。
(def work-in-progress (ref false))
それからしばらくして
(compojure.core/GET "/myapp/internal/do-work" []
(if @work-in-progress
"Work in Progress please try again later"
(do
(dosync
(ref-set work-in-progress true))
(do-the-work)
(dosync
(ref-set rebuild-in-progress false))
"Job completed Successfully")))
ローカルの Jetty サーバーでこれを試してみましたが、URL を 2 回ヒットして作業を 2 倍にできるようです。スレッド化されたWebサーバー環境でClojureにこれを実装するための良いパターン/方法は何ですか?