diff --git a/src/scheduled/mod.rs b/src/scheduled/mod.rs
index 93d09ec..acae7df 100644
--- a/src/scheduled/mod.rs
+++ b/src/scheduled/mod.rs
@@ -14,8 +14,12 @@ pub fn schedule(db: &SqlitePool, config: &Config) {
     let openweathermap_key = config.openweathermap_key.clone();
 
     tokio::task::spawn(async {
-        waterlevel::update(&db).await.unwrap();
-        weather::update(&db, &openweathermap_key).await.unwrap();
+        if let Err(e) = waterlevel::update(&db).await {
+            log::error!("Water level update error: {e}, trying again next time");
+        }
+        if let Err(e) = weather::update(&db, &openweathermap_key).await {
+            log::error!("Weather update error: {e}, trying again next time");
+        }
 
         let mut sched = JobScheduler::new();
 
@@ -26,10 +30,12 @@ pub fn schedule(db: &SqlitePool, config: &Config) {
             // nicer one's rust (stable) support async closures
             task::block_in_place(|| {
                 tokio::runtime::Handle::current().block_on(async {
-                    waterlevel::update(&db_clone).await.unwrap();
-                    weather::update(&db_clone, &openweathermap_key)
-                        .await
-                        .unwrap();
+                    if let Err(e) = waterlevel::update(&db_clone).await {
+                        log::error!("Water level update error: {e}, trying again next time");
+                    }
+                    if let Err(e) = weather::update(&db_clone, &openweathermap_key).await {
+                        log::error!("Weather update error: {e}, trying again next time");
+                    }
                 });
             });
         }));