As books and sources for Elixir/Phoenix/OTP have been posted, I’ll talk about the web frameworks here.
I’ve worked with Flask and Django as well as Phoenix. Here’s my take on all three:
Flask: it’s super light weight in that it ships with very little included. You can bring up a simple web app in no time and gives you full control over as much as you like. That being said there’s a lot of libraries you can selectively include to do some of the repetitive tasks for you.
Django: Django does it all. It’s not “light weight” but that doesn’t mean it’s slow. It has everything you need to write web applications and comes with admin panels, DB query library, authentication etc. If you want to write something more than a simple API or web page, I’d opt for Django. Of course the boundry of “simple” will vary from case to case.
Phoenix: Phoenix is more like Django than Flask in that it includes a more features out of the box. It doesn’t, by default, include an admin dashboard though for example, but it does come with Ecto for example. Your biggest challenge will be adjusting to function programming and Elixir itself, which has nothing to do with Phoenix per se.
I personally find deploying Python apps cumbersome. You can develop with the dev server but to deploy you need to setup nginx as a proxy server and run the application through gunicorn or something similar.
Phoenix you can just deploy and run. It is production ready. You might want to proxy it through nginx still for various reasons, but you don’t have to.
Liveview for Phoenix also just pure magic, and Django channels don’t come close to how amazing live view is.
As for performance, I’d give that to Elixir, especially if you’re not looking to tune deployment. You can mock up a few example applications and use https://locust.io/ to do some load testing. Python’s performance greatly depends on how you set up gunicorn (or other) as well.
If you’re looking for utilities/libraries to take some of the burden’s of development away, Django and Flask probably offer more choice (which can also be a bad thing depending on how you see it). For example creating a REST API in Flask Django can be simplified with frameworks like Django Rest Framework or Flask Restless, for which I don’t believe there is a Phoenix equivalent (I could be wrong).