+ except Exception as error:
+ print("Error in first configuration attempt!")
+ print(error)
+
+ while(True):
+ try:
+ #Needs mongodb in replica mode as this feature relies in OpLog
+ change_stream = client[target_database].prometheus_jobs.watch([{
+ '$match': {
+ #If you want to modify a particular job, delete and insert it again
+ 'operationType': { '$in': ['insert', 'delete'] }
+ }
+ }])
+
+ #Single thread, no race conditions and ops are queued up in order
+ print("Listening to changes in prometheus jobs collection")
+ for change in change_stream:
+ print("Change detected, updating prometheus config")
+ await main_task(client)
+ print()
+ except Exception as error:
+ print(error)
+ print("Detected failure while listening to prometheus jobs collection, retrying...")
+ time.sleep(5)