We even have custom libraries for Django such as Django-pusherable https://github.com/pusher/django-pusherable
Associated blog post at https://blog.pusher.com/django-pusherable/
We even have custom libraries for Django such as Django-pusherable https://github.com/pusher/django-pusherable
Associated blog post at https://blog.pusher.com/django-pusherable/
I also did a talk at this year's DjangoCon Europe about building realtime apps in Django which covers integrating Swampdragon[1] and Pusher in Django.
Video of the talk isn't up yet but the slides are on Speakerdeck[2] and my example code is on Github[3].
[1]: http://swampdragon.net/ [2]: https://speakerdeck.com/aaronbassett/effortless-real-time-ap... [3]: https://github.com/search?q=user%3Aaaronbassett+djangocon
In terms of ease of use, Pusher is easiest to setup as it is a PaaS service so you don't need to install anything. Swampdragon has a slight advantage that you can run it locally without any outside dependencies, which is nice for development.
Scaling and cost, well it depends on your current architecture. Swampdragon you'll need to scale out/maintain your own Redis and Tornado servers whereas with Pusher it's a fixed cost and you don't have to worry about scaling/bursting etc.
A pattern I've seen personally is people start with self-hosting until they reach more concurrent connections than a single server can comfortably handle and then switching to a PaaS service like Pusher.
This is not a cop out, either. In a multi-tiered architecture, it's preferable to avoid stateful sessions between the edge and backend.