I am going break down a project into small microservices.
All microservices are cron-based. I am thinking of celery as a task distribution as well a mechanism to run periodic tasks (celerybeat).
I don't want to build multiple celery app per microserverice as that will increase overhead of having multiple brokers and multiple flower system to use for monitoring.
I tried with single app on multiple servers but I failed. My needs with celery are :
- I need to have independent servers for each microservice
- Task belonging to certain microservice should execute only on their servers; no sharing of task among other servers
- In case microservice is down i don't want celerybeat to clog the broker with thousands of pending tasks, resulting in halting service at other microservices.
- In do not have any need of communication between microservices.
I tried separating queues per worker which doesn't seem to be possible I tried one worker per server but i need more than one worker on per microservices