When you build a web service, there is a time that you need to implement simple async worker for background process. I am big fan of Django and whenever I need a async worker, I used celery
or rq
for convenience. celery
or other async framework provides a lot of cool features but most of the time all I need is a simple background process that would not interrupt user experiences.
Overtime, as paradigm shifts to cloud, I have been thinking lambda as new async worker solution due to deployment complexity, scaling and cost constraint. Here are pros and cons for using lambda instead of celery
on cloud environment(non-local environment).
Most of early stage limitation are lifted as lambda is in mature state (e.g conccurent executions, layers, etc)
AWS recently came up with SAM(Serverless Application Model) which utilize cloudformation for easier deployment of lambda application. SAM provides functionality such as API gateway and statemachine, but we will only be using AWS::Serverless::Function
resource for our purpose. You can consider using Zappa
for other option.