Flask по тестам более производительный. Единственное, что очень сильно меня смутило - проблемы с доменами, если расположить Flask за nginx. Так и не разобрался, как объяснить ему, что он запущен по тому адресу, на котором запущен nginx. Он был убеждён, что запущен на localhost:81 и все редиректы шли туда.
В этом плане больше понравился Tornado, он более гибкий и можно организовать какую угодно структуру поддоменов. Проблемы были только с отсутствием человеческой документации по асинхронным обработчикам запросов.
На Django даже не смотрел. Он там всё ещё не поддерживает Python 3.x? Не было желания его изучать хотя бы чтобы не поддерживать устаревшие технологии. Да и какой-то он мейнстримно-быдлокодерский.
Но, наверное, Tornado и Flask подойдут скорее для небольших проектов. Или для больших, но с основательной проработкой архитектуры. Это неправильный выбор будет для быстрого клепания сайтов в какой-нибудь небольшой фирмочке.
Раньше я тоже применял MongoDB, простота запросов и отсутствие необходимости описывать структуру данных очень привлекала. К тому же данные очень хорошо ложились в обычные питоновские типы. В конечном итоге перешёл на MySQL + SQLAlchemy. Отсутствие нормальных транзакций в MongoDB вызывало очень большие неудобства. Костыли, которые предлагались взамен, были слишком громоздкими и трудными для понимания.