使用现有的 flask-sqlalchemy-postgres 设置 celery 和 redis
setup celery and redis with existing flask-sqlachemy-postgres
我目前在 AWS 上使用 ElasticBeanstalk (EB) 安装了带有 flask-sqlalchemy 扩展的 postgres。 Postgres 运行 使用 RDS。现在我想设置一些后台任务。我阅读了有关 Celery 的信息,似乎非常适合用例。
我想了解如何在 AWS 上进行设置,以便它与同一个数据库对话。对于我想使用 Redis 的实际队列。后台进程的业务逻辑和我在 flask-webserver 中的业务逻辑是交织在一起的。部署过程会是什么样子(有或没有 EB)。如果 celery 和 redis 需要,我可以设置一个新实例,只要我不必将业务逻辑分开很多。
我一直在考虑的另一个 hacky 解决方案是在节点上设置 cron,该节点命中 Flask 应用程序中的某些 URL 以执行后台任务。但我宁愿有一个更具可扩展性的解决方案。
我正在使用具有类似设置的 Flask,我遵循了这个答案:
How do you run a worker with AWS Elastic Beanstalk?
我还使用这个 .config 文件设置了 redis:
https://gist.github.com/yustam/9086610
但是,对于我的设置,我将命令更改为:
command=/opt/python/run/venv/bin/python2.7 manage.py celery
我的 manage.py 有:
@manager.command
def celery():
"""
Start the celery worker.
"""
with app.app_context():
return celery_main(['celery', 'worker'])
我目前在 AWS 上使用 ElasticBeanstalk (EB) 安装了带有 flask-sqlalchemy 扩展的 postgres。 Postgres 运行 使用 RDS。现在我想设置一些后台任务。我阅读了有关 Celery 的信息,似乎非常适合用例。
我想了解如何在 AWS 上进行设置,以便它与同一个数据库对话。对于我想使用 Redis 的实际队列。后台进程的业务逻辑和我在 flask-webserver 中的业务逻辑是交织在一起的。部署过程会是什么样子(有或没有 EB)。如果 celery 和 redis 需要,我可以设置一个新实例,只要我不必将业务逻辑分开很多。
我一直在考虑的另一个 hacky 解决方案是在节点上设置 cron,该节点命中 Flask 应用程序中的某些 URL 以执行后台任务。但我宁愿有一个更具可扩展性的解决方案。
我正在使用具有类似设置的 Flask,我遵循了这个答案:
How do you run a worker with AWS Elastic Beanstalk?
我还使用这个 .config 文件设置了 redis:
https://gist.github.com/yustam/9086610
但是,对于我的设置,我将命令更改为:
command=/opt/python/run/venv/bin/python2.7 manage.py celery
我的 manage.py 有:
@manager.command
def celery():
"""
Start the celery worker.
"""
with app.app_context():
return celery_main(['celery', 'worker'])