Rak*_*att 8 celery python-2.7 celerybeat microservices
我打算将一个项目分解成小型微服务.
所有的微服务都是基于cron的.我认为芹菜作为任务分配以及运行周期性任务的机制(celerybeat).
我不希望每个微服务器构建多个芹菜应用程序,因为这将增加多个代理和多个花系统用于监视的开销.
我尝试在多台服务器上使用单个应用程序,但我失败了 我对芹菜的需求是:
我尝试分离每个工作人员的队列,这似乎是不可能的我每个服务器尝试过一个工作人员,但我需要每个微服务器上有一个以上的工作人员
对于您的用例,从单个代理进行简单的基于队列的路由就足够了.
只保留1个代理在任何一台服务器或单独的服务器上运行.
现在,在排队任务时,将它们添加到单独的队列中.
从微服务1:
In [2]: add.apply_async(args=(12, 1), queue='queue1')
Out[2]: <AsyncResult: 2fa5ca61-47bc-4c2c-be04-e44cbce7680a>
Run Code Online (Sandbox Code Playgroud)
启动worker只使用此队列
celery worker -A tasks -l info -Q queue1
Run Code Online (Sandbox Code Playgroud)
从微服务2:
In [2]: sub.apply_async(args=(12, 1), queue='queue2')
Out[3]: <AsyncResult: 4d42861c-737e-4b73-bfa8-6d1e86241d57>
Run Code Online (Sandbox Code Playgroud)
启动worker只使用此队列
celery worker -A tasks -l info -Q queue2
Run Code Online (Sandbox Code Playgroud)
这将确保微服务中的任务仅由该微服务的工作人员执行.
| 归档时间: |
|
| 查看次数: |
2317 次 |
| 最近记录: |