LINUX.ORG.RU

Хочу вкатиться в Python backend, подскажите стек технологий

 , , , ,


2

4

Привет, лор, собственно, сабж. Python/Django. Решил разобраться в вопросе, написать пет-проект. Перед написанием кода надо сперва установить-настроить нужные компоненты, но я не знал, с чего начать. Нагуглил статью 18го года, где описана связка nginx+gunicorn+postgres, но в комментариях написали, что это перепечатка статьи 16го года и информация уже неактуальна. Вопрос: что на данный момент актуально для решения моей задачи? Чем реально пользуются в продакшоне? Заранее спасибо.



Последнее исправление: abbxuser (всего исправлений: 1)
Ответ на: комментарий от eternal_sorrow

за 5 минут никидал админку

Вся суть комбайнов. Да, можно быстро. Но потом дальше по развитию внезапно вылезает какой-нибудь маленький нюанс типа запросов в базу в цикле, который обойти без тонны костылей никак. Потом ещё один, и ещё.

upcFrost ★★★★★
()
Ответ на: комментарий от upcFrost

Плюс не один проект не обходится без django rest framework, что собственно, намекает. Не, у джанги куча плюсов, особенно новостные сайты делать одно удовольствие… но зачастую всё упирается в перегон json frontend <-> backend, а для этого уже и Golang вполне хорошо подходит

menangen ★★★★★
()
Ответ на: комментарий от anonymous

ну и с python’ом не такой выбор вакансий широкий как на говнопхп, а с эликсиром и подавно будешь жрать мамкин борщ до старости. так-то язык может и интересный. мне в go идея каналов понравилась… так что твой совет из разряда вредных. конечно, можно работать с западными стартапами, но нужно понимать, что у стартапов денег часто вообще нет, поэтому у многих в резюме написано о том, что помимо галер не рассматриваются и стартапы

tz4678 ★★
()
Ответ на: комментарий от upcFrost

Да в Python’е выбор небольшой:

1) поддержка легаси на django, pyramid, tornado.
2) разработка личных кабинетов. это spa на react/vue + json api. и тут далее сл выбор:
  1) использовать асинхронные фреймворки: aiohttp, sanic, fastapi.
    + обрабатывают они побольше запросов чем синхронные раза в два
    - нету нормальных асинхронных ORM. Есть черепаха, которой далеко до той же SQLAlchemy, есть Gino - кастрированная алхимия, которая работает через костыли, есть Peewee Async, работающий опять же через костыли. Можно, конечно, плюнуть на все и ту же алхимию через ThreadPoolExecutor использовать, но так больше писанины, да и выигрыш сомнительный
  2) использовать по старинке синхронные фреймворки
    Тут все сводится к выбору между Flask и DRF. Последний по мне избыточный. И все вскукареки за я слышу лишь от старперов, которым лень что-то новое изучать, да и будь Джанга такой идеальной не появилась бы колба. У джанги еще ORM говно и модели прибиты гвоздями к формам. Алхимия лучшая ORM без сомнения
tz4678 ★★
()
Последнее исправление: tz4678 (всего исправлений: 2)
Ответ на: комментарий от tz4678
Lead Engineer (Remote)
Our software is built using Elixir and the Phoenix web framework. This role is open both to experienced leaders who are new to Elixir development

ompensation

$140,000-180,000 base salary, depending on experience 

Compensation for participation in on-call rotation

Additional compensation via bonuses and participation in profit-sharing pool

Participation in employee stock option pool

401K + employer match that begins on or after 3 months of employment

100% Health / dental / vision benefits for employees, 75% for dependents

3 weeks of vacation time in year 1 and 2, with increases thereafter

Я уже послала резюме, пока ты тут сказки про борщ рассказываешь.

Борщ, кстати, я варю сама.

anonymous
()
Ответ на: комментарий от tz4678

120.000 долларов зарплата начинающего

Мне норм, я еще няней буду подрабатывать.

anonymous
()
Ответ на: комментарий от menangen

Пагади, а где ты написал про жсон/графкл во фразе «django rest»? Для графкла есть неплохой и бодрый тартифлет, а жсон можно чем угодно гонять, тем же aiohttp например

Перевожу - сказать чтоб без джанги нет жсона все равно что сказать что нет базы без phpMyAdmin

upcFrost ★★★★★
()
Последнее исправление: upcFrost (всего исправлений: 1)
Ответ на: комментарий от tz4678

В США 120.000 долларов зарплата начинающего

А ты смищной. В Европе тоже 4к в месяц у джуна, ага. В Греции особенно. Штаты это не только мв/купертино, это ещё и алабамы с техасами

upcFrost ★★★★★
()
Ответ на: комментарий от menangen

При чем тут джанга? Я говорю что без неё тоже есть жизнь

upcFrost ★★★★★
()
Ответ на: комментарий от abbxuser

Ты так говоришь как будто джанга не умеет из коробки дружить с вебсервером, короче какая-то ахинея.

anonymous
()

Не понимаю клоунов, которые тут советуют AioHttp вместо Django. Не, я пойму ещё FastAPI какой-нибудь, но AioHttp… серьёзно? Дядя в разработку вкатиться хочет, ему нужно попроще и чтобы результат сразу видел. Django - однозначно. Если фронт у проекта на React, то прикрути Django Rest Framework - нет тут проблемы никакой. А когда поймёшь, что, допустим, Django для твоих задач избыточен, бери FastAPI, AioHttp, Flask или что-то ещё, что больше подходит.

AioHttp тебе не подходит хотя бы потому, что всю структуру проекта тебе надо делать с нуля самому. А для этого нужен опыт разработки, иначе получится какаха. Django, может быть, и не является эталоном идеальной архитектуры, но даёт тебе каркас, а главное - быстрый результат, который тебя будет мотивировать развиваться. Из коробки у Django идёт сразу админка, ORM, миграции и т.п. В случае с AioHttp всё это прикручивать ты будешь сам. И быстро тут уже не получится, если у тебя опыта нет. В итоге сдуешься и потеряешь терпение.

Тебе нужно:

  • Python
  • Virtualenv (чтобы сделать изолированное окружение Python)
  • PIP (чтобы тот же Django и другие пакеты устанавливать)
  • PostgreSQL (хранение данных)
  • Redis (для кеширования)
  • Nginx + Gunicorn потребуются позже, когда на сервере будешь разворачиваться. А для разработке подходит встроенный в Django dev-сервер: python manage.py runserver.

Можешь вообще поначалу не заморачиваться, не делать кеширование (тогда Redis не нужен даже), а вместо PostgreSQL локально использовать SQLlite. Тогда вообще тебе нужен только Python, Virtualenv и Pip - этого достаточно, чтобы вкатиться.

dimuska139 ★★
()
Последнее исправление: dimuska139 (всего исправлений: 1)
Ответ на: комментарий от dimuska139

«Сделать всю структуру» - это создать пару файлов вручную. Ок. Так и запишем джанга для клинеических идиотов. Virtualenv не нужен, есть venv. За использование pip надо увольнять. Есть poetry, pipenv. Redis не нужен, если собираешься использовать Nginx, достаточно почитать документацию https://docs.nginx.com/nginx/admin-guide/content-cache/content-caching/#enable. Твои знания как минимум устаревшие. Ты не преуспел в Python перескочил на Go, а на Python успел только потыкать какшку в виде Django, но при этом ее всем настоятельно советуешь, не попробовав альтернатив и не поняв зачем нужна вся эта ваша асинхронность, а учитывая что тебе нравится Go, возникают подозрения в мазохизме. Про джанговскую админку: это убожество никому нахер не нужно. Для тебя самого она может и подойдет, но не для «бизнеса»

tz4678 ★★
()
Последнее исправление: tz4678 (всего исправлений: 1)
Ответ на: комментарий от dimuska139

Пример вакансия от говно-конторы Rambler:

Чем предстоит заниматься?

- Поддержка и развитие highload API (aiohttp, redis cluster). Сейчас держим 1к rps, целевая нагрузка ~8к rps. Это единое API для выдачи рекомендаций всем партнерам, с довольно сложной логикой включающей применение моделей машинного обучения на лету;
- Создание и развитие ETL слоя (Airflow): как BigData, на базе стека: Kafka, Hadoop, Hive, Spark, Clickhouse, так и не BigData на базе PostgreSQL;
- Разработка и развитие BackOffice - UI на Flask + SqlAlchemy для управления платформой рекомендаций и предоставления единого окна для визуализации аналитики.

У них есть старые проекты на Django куда требуются джуниоры на поддержку, но как думаешь почему они новые пишут на aiohttp/flask?

tz4678 ★★
()
Последнее исправление: tz4678 (всего исправлений: 1)
Ответ на: комментарий от tz4678

Redis не нужен, если собираешься использовать Nginx

Гениально, этого достаточно, мог дальше и не продолжать. Видимо, ты не в курсе, но не всегда кешируют ответ эндпоинта целиком. Кешировать можно результаты некоторых запросов из БД, например.

при этом ее всем настоятельно советуешь, не попробовав альтернатив

Да ты что, кто тебе вообще сказал, что я на Django пишу и всем её советую тем более? Кто тебе сказал, что я не пробовал альтернатив? При чём тут Go вообще.

Для тебя самого она может и подойдет, но не для «бизнеса»

Я вообще-то писал про возможность вкатиться. Ах да, новичок должен, конечно, для своего проекта админку сразу не Angular запилить без проблем, ага.

По-моему, ты рано нажрался, пятница не сегодня.

dimuska139 ★★
()
Ответ на: комментарий от tz4678

Джуна (а автор этого поста, как я понял, именно такой) не возьмут тут же на aiohttp, тем более на highload API, будь уверен. Никто вообще в здравом уме с асинхронщины обучение разработке не начинает. Flask - возможно, неплохой вариант. Но если ты решил вкатиться в разработку, то, скорее всего, хочется быстро видеть результат (потому что это мотивирует), поэтому я и написал, что Django - отличный вариант для этого. Не понимаю твоей агрессии.

dimuska139 ★★
()
Последнее исправление: dimuska139 (всего исправлений: 1)
Ответ на: комментарий от dimuska139

выборки ты гет-запросом делаешь, т.е. у тебя там query string всегда разный так-то. angular тоже только слоупоки используют.

ничего сложного в использовании асинхронщины нет, тем более если ты фулстэк (на фронте async/await повсеместно).

tz4678 ★★
()
Последнее исправление: tz4678 (всего исправлений: 1)
Ответ на: комментарий от tz4678

Ты никогда не сталкивался с ситуацией, когда ты не можешь закешировать респонс целиком из-за того, что данные постоянно меняются и должны быть актуальны? Ну так вот в такой ситуации, если у тебя делается в нём несколько запросов к БД, некоторые из них (те, где актуальность данных не столь важна), можно кешировать, сократив время ответа сервера и снизив нагрузку на БД. И Nginx тебе тут не поможет.

dimuska139 ★★
()
Ответ на: комментарий от tz4678

angular тоже только слоупоки используют

Ну замени на React, Vue, Svelte или что там ещё в моде, какая разница-то

dimuska139 ★★
()
Ответ на: комментарий от dimuska139

достать куда угодно можно (mount volumes). есть еще заголовок cache-control, который nginx учитывает. сам кеш хранить в tmpfs. redis будет во много раз медленее

tz4678 ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.