MCPcopy
hub / github.com/celery/celery / prepare_models

Method prepare_models

celery/backends/database/session.py:73–94  ·  view source on GitHub ↗
(self, engine)

Source from the content-addressed store, hash-verified

71 engine.dispose()
72
73 def prepare_models(self, engine):
74 if not self.prepared:
75 # SQLAlchemy will check if the items exist before trying to
76 # create them, which is a race condition. If it raises an error
77 # in one iteration, the next may pass all the existence checks
78 # and the call will succeed.
79 retries = 0
80 while True:
81 try:
82 ResultModelBase.metadata.create_all(engine)
83 except DatabaseError:
84 if retries < PREPARE_MODELS_MAX_RETRIES:
85 sleep_amount_ms = get_exponential_backoff_interval(
86 10, retries, 1000, True
87 )
88 time.sleep(sleep_amount_ms / 1000)
89 retries += 1
90 else:
91 raise
92 else:
93 break
94 self.prepared = True
95
96 def session_factory(self, dburi, **kwargs):
97 engine, session = self.create_session(dburi, **kwargs)

Callers 2

session_factoryMethod · 0.95

Calls 2

sleepMethod · 0.45

Tested by 1