flask application deployment: rabbitmq and celery
I don't see why you couldn't deploy on the same node (that's essentially what I do when I'm developing locally), but if you want to be able to rapidly scale you'll probably want them to be separate.  
I haven't used rabbitmq in production with celery, but I use redis as the broker and it was easy for me to get redis as a service.  The web app sends messages to the broker and worker nodes pick up the messages (and perhaps provide a result to the broker).  
You can scale the web app, broker service (or the underlying node it's running on), and the number of worker nodes as appropriate.  Separating the components allows you to scale them individually and I find that it's easier to maintain.
My web app is using celery for async job and rabbitmq for messaging, etc. The standard stuff. When it comes to deployment, are rabbitmq and celery normally deployed in the same node where the web app is running or separate? What are the differences?