File tree Expand file tree Collapse file tree 1 file changed +25
-5
lines changed
Expand file tree Collapse file tree 1 file changed +25
-5
lines changed Original file line number Diff line number Diff line change @@ -32,14 +32,34 @@ def collect_static():
3232def perform_db_migrate ():
3333 """
3434 初始化数据库表
35+ wait-for-it 仅检测 TCP 端口,PostgreSQL 崩溃恢复期间端口已开放但拒绝查询,
36+ 因此在此处增加重试逻辑,等待数据库真正就绪后再执行 migrate。
3537 """
3638 logging .info ("Check database structure change ..." )
3739 logging .info ("Migrate model change to database ..." )
38- try :
39- management .call_command ('migrate' )
40- except Exception as e :
41- logging .error ('Perform migrate failed, exit' , exc_info = True )
42- sys .exit (11 )
40+ max_retries = 10
41+ retry_interval = 5 # seconds
42+ for attempt in range (1 , max_retries + 1 ):
43+ try :
44+ management .call_command ('migrate' )
45+ return
46+ except Exception as e :
47+ err_msg = str (e )
48+ # 判断是否为数据库仍在启动中(崩溃恢复场景)
49+ is_db_starting = (
50+ 'the database system is starting up' in err_msg
51+ or 'starting up' in err_msg
52+ or 'Connection refused' in err_msg
53+ )
54+ if is_db_starting and attempt < max_retries :
55+ logging .warning (
56+ f'Database is not ready yet (attempt { attempt } /{ max_retries } ), '
57+ f'retrying in { retry_interval } s... Error: { err_msg } '
58+ )
59+ time .sleep (retry_interval )
60+ else :
61+ logging .error ('Perform migrate failed, exit' , exc_info = True )
62+ sys .exit (11 )
4363
4464
4565def start_services ():
You can’t perform that action at this time.
0 commit comments