An alternative would be to just use AWS lambda:<p>> You can create a Lambda function and direct AWS Lambda to execute it on a regular schedule. You can specify a fixed rate (for example, execute a Lambda function every hour or 15 minutes), or you can specify a Cron expression.<p><a href="http://docs.aws.amazon.com/lambda/latest/dg/with-scheduled-events.html" rel="nofollow">http://docs.aws.amazon.com/lambda/latest/dg/with-scheduled-e...</a><p>It would remove the need of infrastructure for "task workers". Although, depending on your stack / setup, it of course may be easier to have your application tier double as a task worker due to complicated dependencies or startup times.<p>Additionally, I am not sure if everyone is aware but SQS does offer FIFO delivery with guaranteed once-only "processing". There are some interesting caveats to this, definitely worth looking into though :)
I've used SQS for a simple job queue before. It works well and it's nice not to have to worry about more infrastructure. To make things even better, Celery now has an SQS broker, which I'd like to try out.<p>I've also had success with an HTTP subscription in SNS for simple async jobs. Having your tasks be just another HTTP endpoint is really convenient. It's not actually a task queue, but it's often a good-enough substitute.<p>One frustration I've had with it is that Amazon signs SNS messages, but I can't find a Python library for validating the signature. Not even AWS's flagship API client (boto3) has the functionality.
As simple as this article is trying to make things, it still feels like it's trying to re-create what elastic beanstalk workers already do out of the box... <a href="http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features-managing-env-tiers.html" rel="nofollow">http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-...</a>
Can't wait until Google Functions[1] adds the ability to schedule and define recurring function calls.<p>[1] - <a href="https://cloud.google.com/functions/" rel="nofollow">https://cloud.google.com/functions/</a>
Something similar, and perhaps even simpler: Make a few SNS topics that lambdas can subscribe to - either one per method or one per method type, and then filter more in code - and push notifications to those from your service layer as needed to invoke async workflows. I've been doing this recently and it's pretty pain-free.<p>Been meaning to look at Step Functions for a lot of this async work stuff, but haven't had time yet (plus it's nice to let these things mature a bit before diving in).