Skip to content

Commit c27f346

Browse files
author
AhmadMWaddah
committed
Fix: Reports run synchronously on Render free tier
CELERY_TASK_ALWAYS_EAGER=True in prod so reports execute immediately without Redis
1 parent cfec65d commit c27f346

2 files changed

Lines changed: 15 additions & 10 deletions

File tree

config/settings/prod.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,8 @@
9595
LOGGING["root"]["level"] = "WARNING"
9696
LOGGING["loggers"]["django"]["level"] = "INFO"
9797

98-
try:
99-
CELERY_TASK_ALWAYS_EAGER = False
100-
CELERY_TASK_EAGER_PROPAGATES = False
101-
CELERY_WORKER_PREFETCH_MULTIPLIER = 1
102-
CELERY_WORKER_CONCURRENCY = 4
103-
except Exception:
104-
pass
98+
CELERY_TASK_ALWAYS_EAGER = True
99+
CELERY_TASK_EAGER_PROPAGATES = True
105100

106101
STATICFILES_STORAGE = "whitenoise.storage.CompressedManifestStaticFilesStorage"
107102

reporting/views.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
- Section 15.8: Reporting must align with Architecture targets
88
"""
99

10+
from django.conf import settings
1011
from django.contrib import messages
1112
from django.contrib.auth.decorators import login_required
1213
from django.db import models
@@ -83,15 +84,24 @@ def request_report(request):
8384
if report_type == ReportJob.ReportType.INVENTORY_VALUATION:
8485
from reporting.tasks import generate_inventory_valuation_report
8586

86-
generate_inventory_valuation_report.delay(job.id)
87+
if getattr(settings, "CELERY_TASK_ALWAYS_EAGER", False):
88+
generate_inventory_valuation_report(job.id)
89+
else:
90+
generate_inventory_valuation_report.delay(job.id)
8791
elif report_type == ReportJob.ReportType.SALES_SUMMARY:
8892
from reporting.tasks import generate_sales_summary_report
8993

90-
generate_sales_summary_report.delay(job.id)
94+
if getattr(settings, "CELERY_TASK_ALWAYS_EAGER", False):
95+
generate_sales_summary_report(job.id)
96+
else:
97+
generate_sales_summary_report.delay(job.id)
9198
elif report_type == ReportJob.ReportType.STOCK_MOVEMENT:
9299
from reporting.tasks import generate_stock_movement_report
93100

94-
generate_stock_movement_report.delay(job.id)
101+
if getattr(settings, "CELERY_TASK_ALWAYS_EAGER", False):
102+
generate_stock_movement_report(job.id)
103+
else:
104+
generate_stock_movement_report.delay(job.id)
95105

96106
messages.success(request, f"Report requested: {job.get_report_type_display()}")
97107

0 commit comments

Comments
 (0)