diff --git a/celerybeat-schedule b/celerybeat-schedule index 30eeaa0..c3f159d 100644 Binary files a/celerybeat-schedule and b/celerybeat-schedule differ diff --git a/data/db.sqlite3 b/data/db.sqlite3 index 560f287..72f7ca2 100644 Binary files a/data/db.sqlite3 and b/data/db.sqlite3 differ diff --git a/docker-compose.yml b/docker-compose.yml index cbbbd53..411cba3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,3 @@ -version: '3.8' - services: web: build: . @@ -22,7 +20,7 @@ services: celery_worker: build: . - command: celery -A url_manager worker -l info + command: celery -A url_manager worker --loglevel=info volumes: - .:/app environment: @@ -37,7 +35,7 @@ services: celery_beat: build: . - command: celery -A url_manager beat -l info + command: celery -A url_manager beat --loglevel=info volumes: - .:/app environment: @@ -46,7 +44,7 @@ services: - CELERY_RESULT_BACKEND=redis://redis:6379/0 depends_on: - redis - - web + - celery_worker networks: - app-network diff --git a/links/tasks.py b/links/tasks.py index 953cf4c..da475c9 100644 --- a/links/tasks.py +++ b/links/tasks.py @@ -82,6 +82,7 @@ def process_page(self, page_id): page.process_status = Page.ProcessStatus.COMPLETED page.save() + logger.info(f"Successfully processed page {page_id}") except Exception as exc: page.retry_count += 1 @@ -90,10 +91,12 @@ def process_page(self, page_id): if page.retry_count >= 3: page.process_status = Page.ProcessStatus.FAILED page.error_message = str(exc) + logger.error(f"Failed to process page {page_id} after 3 retries: {exc}") else: page.process_status = Page.ProcessStatus.PENDING # Schedule retry with fibonacci backoff retry_delay = fibonacci(page.retry_count) + logger.info(f"Scheduling retry for page {page_id} in {retry_delay} seconds") self.retry(exc=exc, countdown=retry_delay) page.save() @@ -102,6 +105,7 @@ def process_page(self, page_id): @shared_task def schedule_pending_pages(): """Periodic task to schedule processing of pending pages""" + logger.info("Checking for pending pages...") pending_pages = Page.objects.filter( process_status=Page.ProcessStatus.PENDING, retry_count__lt=3 @@ -110,4 +114,5 @@ def schedule_pending_pages(): ) for page in pending_pages: + logger.info(f"Scheduling processing for page {page.id}") process_page.delay(page.id) diff --git a/links/templates/links/page_list.html b/links/templates/links/page_list.html index 6add56c..4e69af0 100644 --- a/links/templates/links/page_list.html +++ b/links/templates/links/page_list.html @@ -18,26 +18,51 @@