Celery Django Redis - несколько задач одинаковых запросов - PullRequest
0 голосов
/ 19 сентября 2019

Мне нужно немного осветить две проблемы, которые у меня возникли с реализацией с celery, Django и Redis.

Мой код, выполните следующие действия:

  • Получите XLS с, разобрать и начать создавать (сохранять) данные пользователей в этом файле, или, я могу создать этого пользователя один за другим, один запрос.
  • Для каждого пользователя я отправляю уведомления (электронная почта, смс и WhatsApp)).
  • Эти уведомления украшены @shared_tast (из Celery) (задача 1)
  • Есть другие задачи сельдерея (как записать этого пользователя на другом сервере) (задача 2)

Проблема 1: Если в файле XLS есть 3 пользователя для создания, отправляется только одно уведомление (запустить задачу celery).

Проблема 2: Если я попытаюсь записать 1 пользователя и вызвать задачу 1 и задачу 2, то только одна из указанных задач указана).

Но !!!это происходит только при развертывании в AWS EB, локально работает нормально!

Python, Celery, redis, ... - это та же версия.

Здесь части кода:

## File user_service.py ##

class UserService(BaseService):

    def import_users(file)
        # process_file will parse XLS in dict
        users_to_import = process_file(file)

        # for each user, create, save data in DB and call notify_user.
        for user in users_to_import:
            self.save(user)

    def save(self, serializer, company_id=None):
        instance = serializer.save()

        # for each user, need create one task.
        self.task1.delay({...})
        return instance

## File notifications.py ##

@shared_task
def task1(**data):
   send_email()


Exemple ...

users = [user1, user2, user3]

for user in users:
    UserService().save(user)

 ....


task1 (for user1) -> works
task1 (for user2) -> not work
task1 (for user3) -> not work
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...