我目前有一个基于Flask和Celery的服务(其余API)(在一个集群内的docker容器中)。
此服务负责在芹菜工作者中执行多个任务。 这种方法的问题在于,所有任务代码必须都必须与运行的服务相同(并耦合到),同时也不能与celery worker共享(因为它们共享相同的docker映像)
我想知道将这些任务/模块解耦到不同的flask / falcon微服务(在不同的docker服务中)是否是更好的方法。在这种情况下,任务将通过GW的请求(在celery任务中(解除对网关的阻塞))通过GW的请求委派给每个微服务API, 但实际任务将在各自的容器上运行由金枪鱼支持。
最终,我在这里看到的问题是celery任务将被其他服务的rest调用阻塞,直到它们返回,除非它们以某种方式异步运行,这就是celery的目的。
最后一种选择是更好的方法吗?从docker-swarm扩展服务比在celery上更好/更正确地扩展服务?为什么?
谢谢!