import asyncio
import copy
import json
+import time
from bson.json_util import dumps
from bson import ObjectId
client = pymongo.MongoClient(mongodb_url)
print('Connected to MongoDB!')
- print('Refreshing prometheus config file for first time')
- await main_task(client)
-
- #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
- for change in change_stream:
- print("Change detected, updating prometheus config")
+ try:
+ print('Refreshing prometheus config file for first time')
await main_task(client)
- print()
+ 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)
asyncio.run(main())