I have a bot written in Python running on Amazon EC2 with Django as a framework. The bot's end goal is to sustain conversations with multiple users on the same Slack team at once. As I understand it, Amazon will handle load-bearing between Slack teams, but I'm trying to figure out how to manage the load within a single Slack. 
Right now, my bot sits in a busy loop waiting for a single user to respond. I've been doing some research on this - is Celery the right tool for the job? Should I split each conversation into a separate thread/task, or maybe have a dispatcher handle new messages? Is there a way for Slack to send an interrupt, or am I stuck with while loops?
Thanks for any help/guidance! I'm pretty new to this.
Edit: I managed to solve this problem by implementing a list of "Conversation" objects pertaining to each user. These objects save the state of each conversation, so that the bot can pick up where it left off when the user messages again.
Assumptions:

You're using the outgoing webhooks from slack, not the Real Time Messaging API
You're not trying to do some kind of multiple question-answer response where state between each question & answer needs to be maintained.

Skip all the Django stuff and just use AWS Lambda to respond to user requests. That only works for fairly simple "MyBot: do_something_for_me" style things but it's working pretty well for us. Lot easier to manage as well since there's no ec2, no rds, easy deployment, etc. Just make sure you set a reasonable time limit for each Lambda request. From my experience 3 seconds is generally enough time unless you've got a bit of a larger script.
If you really really really have to maintain all this state then you might be better off just writing some kind of quick thing in Flask rather than going through all the setup of django. You'll then have to deal with all the deployment, autoscaling, backup rigmarole that you would for any web service but if you need it, well then ya need it =)
Serving multiple users at once with a Python Slack bot