Skip to content

Commit ce02929

Browse files
committed
⚡(backend) move email sending to celery
Move send_email and send_invitation_email operations to Celery tasks to prevent API endpoints from blocking while sending emails. Signed-off-by: Johann LORBER <[email protected]>
1 parent 7021c0f commit ce02929

File tree

3 files changed

+21
-5
lines changed

3 files changed

+21
-5
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ and this project adheres to
2323
- 🔧(project) change env.d system by using local files #1200
2424
- ⚡️(frontend) improve tree stability #1207
2525
- ⚡️(frontend) improve accessibility #1232
26+
- ⚡(backend) move email sending to celery
2627

2728
### Fixed
2829

src/backend/core/api/viewsets.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
from core import authentication, choices, enums, models
3838
from core.services.ai_services import AIService
3939
from core.services.collaboration_services import CollaborationService
40-
from core.tasks.mail import send_ask_for_access_mail
40+
from core.tasks.mail import send_ask_for_access_mail, send_invitation_mail
4141
from core.utils import extract_attachments, filter_descendants
4242

4343
from . import permissions, serializers, utils
@@ -1640,10 +1640,11 @@ def perform_create(self, serializer):
16401640
access = serializer.save(document_id=self.kwargs["resource_id"])
16411641

16421642
if access.user:
1643-
access.document.send_invitation_email(
1643+
send_invitation_mail.delay(
1644+
access.document.id,
16441645
access.user.email,
16451646
access.role,
1646-
self.request.user,
1647+
self.request.user.id,
16471648
access.user.language
16481649
or self.request.user.language
16491650
or settings.LANGUAGE_CODE,
@@ -1914,10 +1915,11 @@ def perform_create(self, serializer):
19141915
"""Save invitation to a document then send an email to the invited user."""
19151916
invitation = serializer.save()
19161917

1917-
invitation.document.send_invitation_email(
1918+
send_invitation_mail.delay(
1919+
invitation.document.id,
19181920
invitation.email,
19191921
invitation.role,
1920-
self.request.user,
1922+
self.request.user.id,
19211923
self.request.user.language or settings.LANGUAGE_CODE,
19221924
)
19231925

src/backend/core/tasks/mail.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,16 @@ def send_ask_for_access_mail(ask_for_access_id):
2222
access.user.email,
2323
access.user.language or settings.LANGUAGE_CODE,
2424
)
25+
26+
@app.task
27+
def send_mail(document_id, subject, emails, context=None, language=None):
28+
"""Send email from a document template."""
29+
document = models.Document.objects.get(id=document_id)
30+
document.send_email(subject, emails, context, language)
31+
32+
@app.task
33+
def send_invitation_mail(document_id, email, role, sender_id, language=None):
34+
"""Send invitation email for a document."""
35+
document = models.Document.objects.get(id=document_id)
36+
sender = models.User.objects.get(id=sender_id)
37+
document.send_invitation_email(email, role, sender, language)

0 commit comments

Comments
 (0)