Мне нужно немного осветить две проблемы, которые у меня возникли с реализацией с 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
...