用现有的flask-sqlachemy-postgres设置芹菜和redis

时间:2015-08-11 20:11:37

标签: python amazon-web-services flask-sqlalchemy

我目前在AWS上使用ElasticBeanstalk(EB)设置了带有flask-sqlalchemy扩展名的postgres。 Postgres正在使用RDS运行。现在我想设置一些后台任务。我读到了关于Celery,似乎很合适的用例。

我想了解如何在AWS上设置它以便它与同一个数据库进行通信。对于我想要使用Redis的实际队列。后台流程的业务逻辑和我在flask-webserver中的内容非常相互交织。部署过程如何(有或没有EB)。如果需要celery和redis,我可以设置一个新的实例,只要我不必将业务逻辑分开很多。

我一直在考虑的另一个hacky解决方案是在一个节点上设置crons,该节点在Flask应用程序中命中某些URL以执行后台任务。但我宁愿有一个更具伸缩性的解决方案。

1 个答案:

答案 0 :(得分:2)

我正在使用具有类似设置的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'])