diff --git a/messageworker/main.go b/messageworker/main.go
index 3b0cebb7be6a24da9449a41cda5e56ff58b23402..02d812587147680735fb8978a376f149554e6234 100644
--- a/messageworker/main.go
+++ b/messageworker/main.go
@@ -20,43 +20,45 @@ func Run() {
 			continue
 		}
 		log.Log.Debug("Received new task: ", taskData)
-		var task types.Task
-		err = json.Unmarshal([]byte(taskData), &task)
-		if err != nil {
-			log.Log.Error("Failed decoding task as JSON: ", err.Error())
-			return
-		}
-		var instance tables.Instance
-		err = database.Db.Where("name = ?", task.Instance).First(&instance).Error
-		if err != nil {
-			log.Log.Error("Failed retreiving instance from database, pushing task back to queue: ", err.Error())
-			queue.MainQueue.Enqueue(taskData, 60)
-			return
-		}
+		go func() {
+			var task types.Task
+			err = json.Unmarshal([]byte(taskData), &task)
+			if err != nil {
+				log.Log.Error("Failed decoding task as JSON: ", err.Error())
+				return
+			}
+			var instance tables.Instance
+			err = database.Db.Where("name = ?", task.Instance).First(&instance).Error
+			if err != nil {
+				log.Log.Error("Failed retreiving instance from database, pushing task back to queue: ", err.Error())
+				queue.MainQueue.Enqueue(taskData, 60)
+				return
+			}
 
-		var jsonData map[string]interface{}
-		err = json.Unmarshal([]byte(task.Data), &jsonData)
-		if err != nil {
-			log.Log.Error("Failed decoding boiler JSON: ", err.Error())
-			queue.MainQueue.Enqueue(taskData, 60)
-			return
-		}
-		valuesToInsert := []tables.Value{}
-		for key, value := range jsonData {
-			valueType := database.GetOrCreateValueType(key)
-			dbValue := tables.Value{
-				Date:      task.Date,
-				ValueType: valueType,
-				Value:     helper.AnyToString(value),
-				Instance:  instance,
+			var jsonData map[string]interface{}
+			err = json.Unmarshal([]byte(task.Data), &jsonData)
+			if err != nil {
+				log.Log.Error("Failed decoding boiler JSON: ", err.Error())
+				queue.MainQueue.Enqueue(taskData, 60)
+				return
 			}
-			valuesToInsert = append(valuesToInsert, dbValue)
-		}
-		database.Db.Create(&valuesToInsert)
-		err = queue.MainQueue.MarkDone(taskId)
-		if err != nil {
-			log.Log.Error("Failed marking element in queue as done: ", err.Error())
-		}
-		log.Log.Info("Stored boiler data in database")
+			valuesToInsert := []tables.Value{}
+			for key, value := range jsonData {
+				valueType := database.GetOrCreateValueType(key)
+				dbValue := tables.Value{
+					Date:      task.Date,
+					ValueType: valueType,
+					Value:     helper.AnyToString(value),
+					Instance:  instance,
+				}
+				valuesToInsert = append(valuesToInsert, dbValue)
+			}
+			database.Db.Create(&valuesToInsert)
+			err = queue.MainQueue.MarkDone(taskId)
+			if err != nil {
+				log.Log.Error("Failed marking element in queue as done: ", err.Error())
+			}
+			log.Log.Info("Stored boiler data in database")
+		}()
 	}
 }