1515__version__ = "1.1.2-beta.2"
1616
1717MONGO_URI = os .getenv ("MONGO_URI" )
18+ log = logging .getLogger ('gunicorn.error' )
19+ log .setLevel (logging .INFO )
1820
19-
20-
21- def wait_for_mongodb_replicaset (logger , max_retries = 120 , retry_interval = 5 ):
21+ def wait_for_mongodb_replicaset (logger , mongo_uri , max_retries = 120 , retry_interval = 5 ):
2222 """
2323 Wait for MongoDB to be ready before starting the application.
2424 For replica sets, waits for PRIMARY to be elected.
@@ -28,15 +28,15 @@ def wait_for_mongodb_replicaset(logger, max_retries=120, retry_interval=5):
2828 logger .info ("MongoDB is in standalone mode, skipping ReplicaSet wait" )
2929 return
3030
31- mongo_uri = os .getenv ("MONGO_URI" )
32-
3331 if not mongo_uri :
3432 logger .warning ("MONGO_URI not set, exiting application" )
3533 sys .exit (1 )
3634
3735 logger .info (f"Waiting for MongoDB ReplicaSet to be ready and elect the primary..." )
3836
3937 for attempt in range (1 , max_retries + 1 ):
38+ if attempt != 1 :
39+ time .sleep (retry_interval )
4040 try :
4141 # Try to connect
4242 client = MongoClient (
@@ -49,7 +49,7 @@ def wait_for_mongodb_replicaset(logger, max_retries=120, retry_interval=5):
4949 # For replica sets, verify PRIMARY exists
5050 if "replicaSet=" in mongo_uri :
5151 if client .primary is None :
52- raise Exception ( "No PRIMARY elected yet" )
52+ continue
5353 logger .info (f"PRIMARY found: { client .primary } " )
5454
5555 client .close ()
@@ -58,20 +58,13 @@ def wait_for_mongodb_replicaset(logger, max_retries=120, retry_interval=5):
5858
5959 except (ServerSelectionTimeoutError , ConnectionFailure , Exception ) as e :
6060 if attempt >= max_retries :
61- logger .info (
62- f"MongoDB not ready after { max_retries * retry_interval } s"
63- )
61+ logger .info (f"MongoDB not ready after { max_retries * retry_interval } s" )
6462 logger .info (f" Error: { e } " )
6563 sys .exit (1 )
6664
67- if attempt % 6 == 0 : # Print every 30 seconds
68- logger .info (
69- f" Still waiting... ({ attempt } /{ max_retries } ) - { e .__class__ .__name__ } "
70- )
71-
72- time .sleep (retry_interval )
65+ logger .info (f" Still waiting... ({ attempt } /{ max_retries } )" )
7366
74- wait_for_mongodb_replicaset (logging . getLogger () )
67+ wait_for_mongodb_replicaset (log , MONGO_URI )
7568mongo_client = MongoClient (MONGO_URI )
7669
7770VALUES_DIRECTORY = os .getenv ("VALUES_DIRECTORY" , "" )
0 commit comments