远程Celery / Django工作者的REST API或“直接”数据库访问?

时间:2017-01-05 17:19:20

标签: django celery

我正在开展一个项目,该项目将在美国不同地点的机器上安装多个芹菜工人,并通过互联网进行通信。

我最好将我的Django项目分发到每台机器并使用数据库凭据配置它们到我的数据库主机,或者我应该有一个“主”Django /数据库主机,它为远程芹菜任务和工作者提供REST API点击数据库访问?

主要寻找利弊以及我没有想到的任何因素。

我可以提供单个简单的API端点,它提供我的任务查询所需的所有数据,以及可以创建我的任务需要创建的所有数据库条目的简单POST API端点。

我只能说10名远程工作人员每分钟可能会完成1次请求。

我认为这可能意味着我的担忧不是关于请求/响应开销,而是关于可维护性,架构,安全性......

1 个答案:

答案 0 :(得分:2)

答案取决于过多的变量,关注点,力量和其他因素而不是"它取决于......"。

我认为您已经考虑过以下优点和缺点,但无论如何:

使用API​​可以实现更长的请求/响应周期(显然),并对Django项目(前端服务器,应用服务器等)施加相当大的负担。此外,它意味着您的任务无法使用所有数据库功能(复杂查询,聚合等)。

OTHO添加API层将使工作者与内部数据库模式隔离开来,这可以使迁移(在Django端)和部署更容易,因为您不必停止所有工作人员,部署到每个人并重新启动工人。好吧,它甚至可以在不影响工作人员的情况下改变API方面的技术(不是我认为有很多理由这样做,但无论如何......)。但这也意味着您需要维护一个完整的API,并且模型更改的可能性 - 或者最后一部分 - 将会影响您的API和/或任务代码(如果更改是关于添加工作者应该使用的功能)等)。

呃,这真的取决于(是的,我已经说过了,不是吗?)你的项目的需求和限制,只有你/你的团队知道哪个解决方案最符合你的项目。