From bea3e72c10c9a9bdbfe8d3247052943761449bcc Mon Sep 17 00:00:00 2001 From: Travis Shears Date: Fri, 22 Aug 2025 23:00:05 +0200 Subject: [PATCH 1/2] add timeout to websocket reconnect --- deploy.sh | 6 +++++- src/micro_blog/nostr.clj | 7 ++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/deploy.sh b/deploy.sh index e6e200a..a5f2a26 100755 --- a/deploy.sh +++ b/deploy.sh @@ -1,5 +1,9 @@ #!/bin/sh +set -e + export AWS_PROFILE=personal -docker buildx build --platform linux/amd64,linux/arm64 -t 853019563312.dkr.ecr.eu-central-1.amazonaws.com/micro-blog-fetchers-homelabstack:latest --push . \ No newline at end of file +docker buildx build --platform linux/amd64,linux/arm64 -t 853019563312.dkr.ecr.eu-central-1.amazonaws.com/micro-blog-fetchers-homelabstack:latest --push . + +echo "Image pushed to ECR" diff --git a/src/micro_blog/nostr.clj b/src/micro_blog/nostr.clj index 1aecdc5..3e751fa 100644 --- a/src/micro_blog/nostr.clj +++ b/src/micro_blog/nostr.clj @@ -53,6 +53,7 @@ pb/save-post))))) (def socket (atom nil)) +(declare start) (defn connect [] (tel/log! :info "Opening websocket connection to nostr relay") (reset! socket @(ws/websocket (@config :nostr-relay) @@ -60,7 +61,11 @@ :on-message (fn [_ws msg _last?] (process-msg msg)) :on-close (fn [_ws status reason] - (tel/log! {:level :warn :data {:status status :reason reason}} "WebSocket connection closed"))}))) + (tel/log! {:level :warn :data {:status status :reason reason}} "WebSocket connection closed") + (future + (Thread/sleep (* 5 60 1000)) + (tel/log! :info "Reconnecting WebSocket") + (start)))}))) (defn subscribe-to-author [pubkey since] (let [sub-id (@config :nostr-fetcher-id) From 7f6911b73eba4a8183a89e36ab048f3912965099 Mon Sep 17 00:00:00 2001 From: Travis Shears Date: Wed, 3 Sep 2025 10:19:32 +0200 Subject: [PATCH 2/2] add api endpoint to restart nostr --- deploy.sh => build.sh | 0 src/micro_blog/api.clj | 22 ++++++++++++++++------ src/micro_blog/nostr.clj | 1 + 3 files changed, 17 insertions(+), 6 deletions(-) rename deploy.sh => build.sh (100%) diff --git a/deploy.sh b/build.sh similarity index 100% rename from deploy.sh rename to build.sh diff --git a/src/micro_blog/api.clj b/src/micro_blog/api.clj index 38262e1..b200cb6 100644 --- a/src/micro_blog/api.clj +++ b/src/micro_blog/api.clj @@ -4,10 +4,11 @@ [micro-blog.config :refer [config]] micro-blog.mastodon micro-blog.blue-sky + micro-blog.nostr [taoensso.telemere :as tel])) (defn mastodon-proc-handler [_request] - (let [msg "Proceding Mastodon Scrape"] + (let [msg "Procding Mastodon Scrape"] (tel/log! :info msg) (micro-blog.mastodon/run) {:status 200 @@ -15,14 +16,23 @@ (defn blue-sky-proc-handler [_request] (let [msg "Procing BlueSky Scrape"] - (tel/log! :info msg) - (micro-blog.mastodon/run) - {:status 200 - :body msg})) + (tel/log! :info msg) + (micro-blog.mastodon/run) + {:status 200 + :body msg})) + +(defn nostr-proc-handler [_request] + (let [msg "Restarting Nostr scraper"] + (tel/log! :info msg) + (micro-blog.nostr/close) + (micro-blog.nostr/start) + {:status 200 + :body msg})) (def routes #{["/bluesky" :get blue-sky-proc-handler :route-name :blue-sky] - ["/mastodon" :get mastodon-proc-handler :route-name :mastodon]}) + ["/mastodon" :get mastodon-proc-handler :route-name :mastodon] + ["/nostr" :get nostr-proc-handler :route-name :nostr]}) (defn create-connector [] (-> (conn/default-connector-map (:api-host @config) (Integer/parseInt (str (:api-port @config)))) diff --git a/src/micro_blog/nostr.clj b/src/micro_blog/nostr.clj index 3e751fa..9a5a3de 100644 --- a/src/micro_blog/nostr.clj +++ b/src/micro_blog/nostr.clj @@ -74,6 +74,7 @@ (.get (ws/send! @socket msg)))) (defn close [] + (tel/log! :info "Closing nostr socket") (ws/close! @socket)) (defn start []