diff --git a/docker-compose.apps.yml b/docker-compose.apps.yml index 0b4ac494aa..0f030d18a7 100644 --- a/docker-compose.apps.yml +++ b/docker-compose.apps.yml @@ -50,8 +50,7 @@ services: command: > /bin/bash -c ' sleep 3; - celery -A main.celery:app worker -Q default -B -l ${MITOL_LOG_LEVEL:-INFO} & - celery -A main.celery:app worker -Q edx_content,default -l ${MITOL_LOG_LEVEL:-INFO}' + celery -A main.celery:app worker -E -Q default,edx_content -B -l ${MITOL_LOG_LEVEL:-INFO}' depends_on: db: condition: service_healthy diff --git a/learning_resources_search/tasks.py b/learning_resources_search/tasks.py index b3a07cf71c..b91ef784b5 100644 --- a/learning_resources_search/tasks.py +++ b/learning_resources_search/tasks.py @@ -275,7 +275,13 @@ def send_subscription_emails(self, subscription_type, period="daily"): return self.replace(email_tasks) -@app.task(autoretry_for=(RetryError,), retry_backoff=True, rate_limit="600/m") +@app.task( + acks_late=True, + reject_on_worker_lost=True, + autoretry_for=(RetryError, SystemExit), + retry_backoff=True, + rate_limit="600/m", +) def index_learning_resources(ids, resource_type, index_types): """ Index courses @@ -290,7 +296,7 @@ def index_learning_resources(ids, resource_type, index_types): try: with wrap_retry_exception(*SEARCH_CONN_EXCEPTIONS): api.index_learning_resources(ids, resource_type, index_types) - except (RetryError, Ignore): + except (RetryError, Ignore, SystemExit): raise except: # noqa: E722 error = "index_courses threw an error" @@ -348,7 +354,13 @@ def bulk_deindex_percolators(ids): return error -@app.task(autoretry_for=(RetryError,), retry_backoff=True, rate_limit="600/m") +@app.task( + acks_late=True, + reject_on_worker_lost=True, + autoretry_for=(RetryError, SystemExit), + retry_backoff=True, + rate_limit="600/m", +) def bulk_index_percolate_queries(percolate_ids, index_types): """ Bulk index percolate queries for provided percolate query Ids @@ -366,7 +378,7 @@ def bulk_index_percolate_queries(percolate_ids, index_types): PERCOLATE_INDEX_TYPE, index_types, ) - except (RetryError, Ignore): + except (RetryError, Ignore, SystemExit): raise except: # noqa: E722 error = "bulk_index_percolate_queries threw an error" @@ -397,7 +409,13 @@ def index_course_content_files(course_ids, index_types): return error -@app.task(autoretry_for=(RetryError,), retry_backoff=True, rate_limit="600/m") +@app.task( + acks_late=True, + reject_on_worker_lost=True, + autoretry_for=(RetryError, SystemExit), + retry_backoff=True, + rate_limit="600/m", +) def index_content_files( content_file_ids, learning_resource_id, @@ -418,7 +436,7 @@ def index_content_files( api.index_content_files( content_file_ids, learning_resource_id, index_types=index_types ) - except (RetryError, Ignore): + except (RetryError, Ignore, SystemExit): raise except: # noqa: E722 error = "index_content_files threw an error" @@ -843,7 +861,7 @@ def get_update_learning_resource_tasks(resource_type): @app.task( acks_late=True, reject_on_worker_lost=True, - autoretry_for=(RetryError,), + autoretry_for=(RetryError, SystemExit), retry_backoff=True, rate_limit="600/m", )