我在本地的开发机器上有我想用django-celery
做的一切。我运行Django、djcelery
、cellery
和代理(Amazon SQS)。它发送任务并且工作。
我可以设置这一切,就像我在本地所做的(即所有在一个机器),但是当我想要将任务分配给另一个时会发生什么机器/共享任务等?这是当前机器(Django, djcelery
和celery
)的副本,并且所有连接到同一个SQS吗?这是如何工作的呢?如果他们都连接到同一个经纪人,他们只是"知道"吗?或者它不是这样工作的?
是否可以像我在开发中那样在一台机器上开始一切(我将在生产中守护芹菜)?
Amazon SQS是一种简单队列服务,作业进入等待运行,然后在完成后从队列中删除。芹菜只是从这个队列中读取。
芹菜可以水平和垂直缩放。你需要芹菜来更快地处理更多的任务?给你的机器更多的资源,增加工人数量,这是垂直扩展,或者引导更多的小机器,这是水平扩展。无论哪种方式,您的芹菜工作程序都在SQS上消耗相同的队列。它确实取决于您的芹菜工作正在做什么,以及其他基础设施将如何受到影响。如果它们正在写入数据库,那么您的数据库上的工作人员越多,负载就越高,因此您也需要考虑扩展。
在一台机器上使用"所有"方法开始是可以的。随着你的应用需求的增长,你可以开始考虑将芹菜工人移到更多的机器上,或者给你的所有在一个服务器上更多的资源。
这有帮助吗?:)