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