Запрос не возвращает значения None в задачах Celery
В моем приложении есть задачи celery, но когда я пытаюсь запросить базу данных в функциях, некоторые из них возвращают значение "Не существует" или "ни одной"
@shared_task
def email_on_assign_reviewer(submission, reviewerlist):
"""
Send an email to the Reviewer when they are assigned to review
"""
print(submission) # prints normally
print(reviewerlist) # this prints the list of id of reviewers perfectly
submission = Submission.objects.get(id=submission)
print(submission) # this prints the submission perfectly
context = {"some": "context"}
for id in reviewerlist:
reviewer = Reviewer.objects.filter(id=id).first()
print(reviewer) #this returns none
if reviewer:
context['reviewer_name'] = reviewer.user.first_name
utils.sendEmail(
context,
template="review_assign.html",
to=[reviewer.user.email]
)
МОЕ МНЕНИЕ
def perform_create(self, serializer):
submission = Submission.objects.filter(id=self.kwargs['submission_pk']).first()
*SOME LOGIC*
data = serializer.save()
for i in reviewerlist:
print(Reviewer.objects.filter(id=i).first()) # this prints the reviewers perfectly
tasks.email_on_assign_reviewer.delay(submission.id, reviewerlist)
МОЙ СЕРИАЛИЗАТОР
def create(self, validated_data):
submission_id = self.context['submission_id']
user_ids = validated_data.pop('user_ids', [])
existing_profile_ids = Somequery.objects.all()
for user_id in user_ids:
if user_id not in existing_profile_ids:
reviewer = Reviewer.objects.create(submission_id=submission_id, user_id=user_id, )
reviewers_to_create.append(reviewer.pk)
return reviewers_to_create
В некоторых задачах результаты отправки не существуют