Где запустить Celery на AWS
В моем веб-приложении django я выполняю расчет, который занимает 2-10 минут, и сервер AWS завершает работу с ошибкой 504 server error.
Кажется, что лучший способ решить эту проблему - реализовать рабочий сервер и разгрузить вычисления. В результате некоторых исследований, кажется, что Celery с сервером Redis (возможно, AWS SQS вместо этого?) лучше всего подходят для Django.
Однако я вижу учебники только для экземпляров, которые запускаются локально. Сервер Redis размещен на Railway, а Celery запущен в отдельном терминале, чем Django (на той же локальной машине). Мне интересно, должны ли Celery и Redis работать на AWS.
В этом ответе говорится you should try to run celery as a deamon in the background. AWS Elastic Beanstalk uses supervisord already to run some deamon processes. So you can leverage that to run celeryd and avoid creating a custom AMI for this. It works nicely for me.
но разве серверы Celery и Redis все еще не должны как-то работать?
Где запускается сервер Celery? Как его запустить? Как я могу использовать supervisord для запуска процессов демонов? Документация не очень помогает мне с интеграцией AWS
Вы можете настроить Procfile
на параллельный запуск нескольких процессов, таких как основное приложение django, celery и celery-beat, как описано здесь :
web: <command to start your django app>
celery: celery -A <path_to_celery_app> worker
celery_beat: celery -A <path_to_celery_app> beat