@@ -86,7 +86,7 @@ def start(disable_collection, development, port):
86
86
logger .info (f'Augur is running at: { "http" if development else "https" } ://{ host } :{ port } ' )
87
87
88
88
processes = start_celery_worker_processes (float (worker_vmem_cap ), disable_collection )
89
- time . sleep ( 10 )
89
+
90
90
if os .path .exists ("celerybeat-schedule.db" ):
91
91
logger .info ("Deleting old task schedule" )
92
92
os .remove ("celerybeat-schedule.db" )
@@ -150,6 +150,7 @@ def start_celery_worker_processes(vmem_cap_ratio, disable_collection=False):
150
150
available_memory_in_bytes = psutil .virtual_memory ().total * vmem_cap_ratio
151
151
available_memory_in_megabytes = available_memory_in_bytes / (1024 ** 2 )
152
152
max_process_estimate = available_memory_in_megabytes // 500
153
+ sleep_time = 0
153
154
154
155
#Get a subset of the maximum procesess available using a ratio, not exceeding a maximum value
155
156
def determine_worker_processes (ratio ,maximum ):
@@ -158,32 +159,39 @@ def determine_worker_processes(ratio,maximum):
158
159
frontend_worker = f"celery -A augur.tasks.init.celery_app.celery_app worker -l info --concurrency=1 -n frontend:{ uuid .uuid4 ().hex } @%h -Q frontend"
159
160
max_process_estimate -= 1
160
161
process_list .append (subprocess .Popen (frontend_worker .split (" " )))
162
+ sleep_time += 6
161
163
162
164
if not disable_collection :
163
165
164
166
#2 processes are always reserved as a baseline.
165
167
scheduling_worker = f"celery -A augur.tasks.init.celery_app.celery_app worker -l info --concurrency=2 -n scheduling:{ uuid .uuid4 ().hex } @%h -Q scheduling"
166
168
max_process_estimate -= 2
167
169
process_list .append (subprocess .Popen (scheduling_worker .split (" " )))
170
+ sleep_time += 6
168
171
169
172
#60% of estimate, Maximum value of 45
170
173
core_num_processes = determine_worker_processes (.6 , 45 )
171
174
logger .info (f"Starting core worker processes with concurrency={ core_num_processes } " )
172
175
core_worker = f"celery -A augur.tasks.init.celery_app.celery_app worker -l info --concurrency={ core_num_processes } -n core:{ uuid .uuid4 ().hex } @%h"
173
176
process_list .append (subprocess .Popen (core_worker .split (" " )))
177
+ sleep_time += 6
174
178
175
179
#20% of estimate, Maximum value of 25
176
180
secondary_num_processes = determine_worker_processes (.2 , 25 )
177
181
logger .info (f"Starting secondary worker processes with concurrency={ secondary_num_processes } " )
178
182
secondary_worker = f"celery -A augur.tasks.init.celery_app.celery_app worker -l info --concurrency={ secondary_num_processes } -n secondary:{ uuid .uuid4 ().hex } @%h -Q secondary"
179
183
process_list .append (subprocess .Popen (secondary_worker .split (" " )))
184
+ sleep_time += 6
180
185
181
186
#15% of estimate, Maximum value of 20
182
187
facade_num_processes = determine_worker_processes (.2 , 20 )
183
188
logger .info (f"Starting facade worker processes with concurrency={ facade_num_processes } " )
184
189
facade_worker = f"celery -A augur.tasks.init.celery_app.celery_app worker -l info --concurrency={ facade_num_processes } -n facade:{ uuid .uuid4 ().hex } @%h -Q facade"
185
190
186
191
process_list .append (subprocess .Popen (facade_worker .split (" " )))
192
+ sleep_time += 6
193
+
194
+ time .sleep (sleep_time )
187
195
188
196
return process_list
189
197
0 commit comments