diff --git a/src/service.py b/src/service.py index ddb5c496fbe2299aab00edf31f6e33d83bc50f9b..9073025127148899e854823f0eae251596b28071 100644 --- a/src/service.py +++ b/src/service.py @@ -147,9 +147,12 @@ class ApiService(): if self.node_type == NodeType.MAIN or \ (self.node_type == NodeType.SYNC and data.log_source == self.active_source): - playlog = PlayLog(data) - playlog.save() - self.logger.debug("Stored playlog for '%s'" % playlog.track_start) + try: + playlog = PlayLog(data) + playlog.save() + self.logger.debug("Stored playlog for '%s'" % playlog.track_start) + except sqlalchemy.exc.IntegrityError as e: + self.logger.info("Playlog for '%s' is already existing in local database. Skipping..." % playlog.track_start) # Main Node: Push to Sync Node, if enabled if self.node_type == NodeType.MAIN and self.sync_host and self.api_playlog: @@ -164,7 +167,7 @@ class ApiService(): playlog.is_synced = True playlog.save() else: - self.logger.error("Error while pushing playlog to sync-node: " + r.json()) + self.logger.error("Error while pushing playlog to sync-node: " + str(r.json())) except Exception as e: self.logger.error("Error while posting to sync-node API '%s'!\n%s" % (api_url, str(e))) else: @@ -253,7 +256,7 @@ class ApiService(): playlog.is_synced = True playlog.save() else: - self.logger.error("Error while pushing healthlog to sync-node: " + r.json()) + self.logger.error("Error while pushing healthlog to sync-node: " + str(r.json())) except Exception as e: self.logger.error("Error while posting to sync-node API '%s'!" % (api_url), e) else: diff --git a/src/sync.py b/src/sync.py index cfd189deacfc29bbc150fd17403851d31692f4ee..e5fd6514c3387bce13347e497876877d87f5162e 100644 --- a/src/sync.py +++ b/src/sync.py @@ -105,13 +105,16 @@ class SyncJob(threading.Thread): # Store unsynced entries locally for entry in entries: - playlog = PlayLog(entry) - self.Session.add(playlog) - self.Session.commit() - self.logger.info("Stored synced playlog for '%s'" % playlog.track_start) - synced_entries += 1 - + try: + playlog = PlayLog(entry) + self.Session.add(playlog) + self.Session.commit() + self.logger.info("Stored synced playlog for '%s'" % playlog.track_start) + synced_entries += 1 + except sqlalchemy.exc.IntegrityError as e: + self.logger.info("Playlog for '%s' is already existing in local database. Skipping..." % playlog.track_start) + # Sleep a little to keep the effective load down low time.sleep(self.config.get("sync_step_sleep")) @@ -152,7 +155,7 @@ class SyncJob(threading.Thread): to_time = next_source.log_time try: - params = { "page": "0", "limit": self.sync_batch_size, "skip_synced": "true", "from": source.log_time, "to": to_time} + params = { "page": "0", "limit": self.sync_batch_size, "skip_synced": "true", "from_date": source.log_time, "to_date": to_time} url = self.get_url(source.source_number) response = requests.get(url, params=params) if response.status_code == 200: