я старый перловод, решил переползти на Python, обучение сразу начал с третьей версии (нет смысла цепляться за legacy, которого не станет через 3-5 лет).
собственно, скрипты пишутся худо-бедно, сейчас осваиваю объектную модель и в целом стараюсь писать чистый и прозрачный код (не знаю, как получается, хреново, наверное).
одной из задач стоит выбор веб-фреймворка для предоставления API сторонней программе (использовать думаю REST). Что лучше всего подойдёт для выбранной задачи, Flask или Django?
Возьмите Flask или Tornado, их я пробовал и для реализаципи API они как-то лучше подойдут, нежели Django. Django хорош для сложных сайтов.
Я использую для сервера браузерной игры Tornado с трансфером через вебсокет. Проблем торнадо не добавил ни разу.
Для сложных проектов, Django, например, хорош тем, что какие бы простыни кода не порождал программист, легко можно найти какая функция/класс за что отвечает — за счет четкой структуры, определенной на уровне идеологии фреймворка. Flask практически не обязует соблюдать какие-либо правила, поэтому поддерживающим код может прийтись очень туго.
В зависимости от задачи. Flask легкий, а вместо django я рекомендую pyramid (http://blog.jetbrains.com/pycharm/2013/10/webinar-recording-production-python-3-web-development-with-pyramid-and-pycharm/), который сложнее чем django, но как по мне так он более привлекательней чем нафаршированная django
С последнего релиза Django официально поддерживает третий питон. одной из задач стоит выбор веб-фреймворка для предоставления API сторонней программе (использовать думаю REST). Что лучше всего подойдёт для выбранной задачи, Flask или Django?
В Django как раз есть батарейки для таких вещей. Можно посмотреть в сторону tastypie или django-rest-framework. Нужно отдельно уточнять насчет совместимости конкретной батарейки с третьим питоном.
Tornado — если нужен асинхронный подход (голову правда сломать может), без асинхрона он мало смысла имеет.
Pylons или Pyramid — для всего остального (более тяжёлые и не асинхронные приложения).
> Pylons или Pyramid — для всего остального (более тяжёлые и не асинхронные приложения).
Нет смысла советовать Pylons, так как он больше не разрабатывается и Pyramid официально является его преемником. Насчет тяжелости — Pyramid можно запускать под gevent, тогда он он будет тоже асинхронный. Вообще footprint у Pyramid очень маленький, сравним с Flask.
Нет смысла советовать Pylons, так как он больше не разрабатывается
Он фичер комплит. А те компоненты из которых он состоит живут развиваются а pylons допиливают для совместимости.
Pyramid официально является его преемником
Это совершенно другой проект. По сути это приемник BFG.
Pyramid можно запускать под gevent, тогда он он будет тоже асинхронный.
Если доступ к БД, файлам и сети будет синхронным то толку мало, о чём собственно и пишут разработчики Pyramid. В том же Tornado для доступа к MongoDB можно использовать motor, а для доступа к Postgres momoko. Правда под python 3 у меня были проблемы с производительностью.
Он фичер комплит. А те компоненты из которых он состоит живут развиваются а pylons допиливают для совместимости.
Он попросту больше не поддерживается, последний коммит был год назад или там даже версии зависимостей обновлять не надо?
Это совершенно другой проект. По сути это приемник BFG.
Тем не менее именно коммьюнити Pylons теперь развивает его.
Если доступ к БД, файлам и сети будет синхронным то толку мало, о чём собственно и пишут разработчики Pyramid. В том же Tornado для доступа к MongoDB можно использовать motor, а для доступа к Postgres momoko. Правда под python 3 у меня были проблемы с производительностью.
Кто мешает использовать асинхронные драйвера или те, которые становятся асинхронными под gevent? psycopg2, pymongo например.
я пока просто осваиваю работу с сокетами (в принципе, всё оказалось не так страшно, как казалось :)), и вот интересно, сильно ли придётся ломать голову и устоявшуюся логику для освоения асинхронного взаимодействия?