Как стать автором
Обновить

Комментарии 43

Как раз мне не хватало что то такого. Давно хотел попробовать изучить некоторые технологии.

Автору спасибо, сам люблю фласк за то что минималистичный, быстро настраивается

Аж глаз радуется.
Бегло пробежал глазами, но это в любом случае идет в закладки, чтобы удобно кидать падаванам как заметку.

Я правда отказался от gunicorn в пользу uWSGI, но это слишком спцифичный кейс когда тредпулы используются внутри хэндлера фласка :))

Правильно. Так и надо. Это только лохи мега-учебники по Flask на несколько десятков статей пишут. А тут бац-бац и все в одну статью вместилось.

что, всё так плохо?

Да как сказать...

Не в обиду автору, но его статья лучше всего описывается "рисуем овал - рисуем оставшуюся часть совы"

Он как будто за все хорошее и против всего плохого - со всеми вытекающими.

А по мне, так как раз очень хорошо: «Будем использовать такой подход; основы вот; а подробности читать по этой ссылке». Без лишней воды и теоретизирования охватили всю разработку системы общим взглядом.

Посмотреть на весь процесс с высоты тоже полезно. Чтобы нарисовать сову, неплохо бы на неё сначало посмотреть.

В Барселоне есть собор со статуями слонов, которые делались людьми которым рассказывали как выглядит слон. Вышло так-себе. Это собор святого креста и святой Евлалии. Доберусь до компа найду фоточки.

Хорошая статья, кратко охватили основы Backend и Frontend разработки, но почему не использовать FastAPI для разработки и объяснения backend части? FastAPI - довольно легкий и удобный фреймворк с большим функционалом, который, как по мне, понятнее, чем Flask для понимания REST и для реализации микросервисной архитектуры с основ, что пригодится для бедующей разработки веб-приложений.

Конкретно в этом случае я использовал Flask, потому что, исходя из технического задания, более логичной архитектурой приложения будет монолит MPA. А такая архитектура отлично реализуется на Flask.

Вы абсолютно правильно заметили, что FastAPI хорош для микросервисной архитектуры с реализацией приложения в виде SPA. У меня сейчас в работе проект, где именно микросервисная архитектура и там я использую FastAPI

Без разницы какой фреймворк, главное есть ли нужные библиотеки под него.

После этого мы создаем на удаленном сервере SSH ключи — публичный и приватный. И эти ключи указываем на GitHub, чтобы можно было скачивать репозитории с GitHub.

Так ли это? Приватный?

Публичный ключ указываем в глобальных настройках GitHub, чтобы можно было клонировать репозиторий. А приватный ключ указываем в Secrets репозитория нашего проекта, чтобы можно было реализовать CI/CD через GitHub Actions.

Есть супер объяснение как эти ключи получать и что куда класть - https://www.youtube.com/watch?v=V2YYhGn3MGo&ab_channel=Chaby%27sTech

У нас приватный ключ будет использован в CI/CD

cd:
    needs: ci
    name: Update server buy ssh
    runs-on: ubuntu-latest
    steps:
      - name: Connect and run scripts
        uses: appleboy/ssh-action@v1.0.3
        with:
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USERNAME }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          port: ${{ secrets.PORT }}
          script: |
            whoami
            cd ${{ secrets.PROJECT_FOLDER }}
            git checkout main
            git pull
            docker compose down
            docker builder prune --force
            docker image prune --force
            docker compose up -d --build

Сайт работает? Отображается только лого, месяц и две ссылки на гитхаб и телегу.

Открытие сайта в сентябре, сейчас идет наполнение контентом. Пока заглушка на сервере стоит. Когда контентом будет заполнен, сайт откроется.

Кстати хорошо, что сказали. Я уже уточнил на заглушке, что происходит и когда открытие сайта.

В публичном репозитории все работает для запуска с локальной машине, но у сайта на сервере будет больше фич

Такое впечатление, что статья написана джуном+, который открыл некоторые фишки и безапелляционно вещает об этом миру. Некоторые советы вообще из разряда советов Остера. Ну и вишенкой на торт: долгие рассказы, а сайт не работает (-:

Сайт работает на сервере

Кстати когда будет открытие - приглашаю вас. Я почитал ваши комментарии, посмотрел ваш рейтинг - я думаю материалы сайта вам сильно пригодятся, у вас прослеживается определенная патология

Т.е. Вы еще не только джун, еще и диагнозы ставите, молодой человек? ((((-:
Сайт работает на сервере (((-: Иногда лучше молчать (-:
Составлять мнение по рейтингу и комментариям - это вершина (-:
Ну а о том, что Вы можете чему-то меня научить... молодой человек, Вы хотя бы лет 10-15 сначала попрограммируйте, а потом этот юношеский максимализм сойдет на нет, вот тогда можно будет о чем-то общаться. На данный момент Вы меня не можете научить ничему от слова совсем (((-:
Ну и купите себе уже учебник по русскому языку, в конце-то концов

Я встречал в своей жизни много старых токсичных дедов, которые говорили, что "молодежь пошла не та". Только когда дело касается реальных результатов, эти деды ничего, кроме слов показать не могут. Пока молодежь решает задачи бизнеса, деды сидят и ворчат себе под нос. Поэтому современный работадатель относится скептически к найму людей в возрасте.

По поводу владния русским языком - спасибо за обратную связь, эта проблема у меня ещё со школы - в аттестате только единственная четверка по русскому языку была

А у меня и этой "4" даже не было (((-:
Да, мы все деды безработные (((-: нас увольняют, никто не берет на работу, ведь кому нужны опыт и знания, когда можно набрать неграмотных выскочек, у которых нет ни опыта, ни знаний и к тому же "проблемы в ясном изложении своих мыслей"?! Выбор очевиден.
И да: у меня в команде все младше меня и никаких проблем, когда у людей нет нарциссическое расстройства (-:

Вот и идите учите свою команду. Что вы сделали для сообщества Хабра? Ни одной публикации, ни одной ссылки на репозитории, карма минус 10. Вы пожоже на глиста, ленточного червя, паразит одним словом, который перепупал комментарии на Хабре с туалетом. Жалко как на YouTube вас нельзя забанить и удалить ту чушь, которую вы пишите. Пошёл вон отсюда

Ну наконец-то вылезло настоящее нутро инфоцыгана и реальные интеллектуальные спасобности ((-:

Какое инфоцыганство? Я ни с кого ни одной копейки не взял и не собираюсь. Я, наоборот, все абсолютно бесплатно для сообщества выложил и для молодежи, пусть посмотрят реальный проект. Там чистый код, соразмерные функции - может ребята что-то для себя почерпут.

Проект будет вести мой друг с высшим медицинским образованием. Это дипломированный специалист.

И причем тут мои интеллектуальные "спАсобности"? Я никогда себя не позиционировал как умного человека, никаких олимпиад не выигрывал. Да, что-то знаю, но не более того.

По поводу грубости с моей стороны, так вы первые начали. Когда человек со мной общается уважительно, то я с ним тоже уважительно. Я ко всем уважительно отношусь: будь-то к гендиру или к уборщице. Но когда человек изнчально ко мне относится как к скоту - я в ответ к ниму буду также относиться.

Ну и напоследок... А что? Вас забанили? Боже, какая неожиданность!

Когда человек со мной общается уважительно, то я с ним тоже уважительно.

А про остальных людей кому приходят уведомление о новых комментариях вы подумали?

Если вы позволяете с собой общаться как со скотом - потом все будут о вас вытирать ноги. Пусть все видят, что наглого оппонента, который не вибирает выражений, надо раздавить, уничножить, показать щенку, где его место. Человек начал троллить - получил абсолютно заслуженно бан.

Должен быть характер у мужчины. Должна быть агрессия. А то все станут мягкотелыми и получится как в Европе, когда мигранты диктуют свою волю коренному населению. В итоге это население вымираем, а они размножаются. Мужчинами надо быть, а не тряпками

В обезьяней стае есть самцы. Качестава которые во описали им неообходимы. От мужчины ожидается намного больше чем от самца. Как минимум соответсвующего поведения в обществе.

Переход на личности и бросание фекалий в опонентов это больше про отсутствие культуры, а не про сильную личность.

Во всех айти компаниях, где я работал, такое поведение считалось токсичным.

Для меня такой стиль общения, это огромный красный флаг для кандидата.

кандидаты уже давно знают как надо отвечать на вопросы на собеседованиях. В IT компаниях такое поведение действительно токсичное, работа - это не то место, где надо быть самим собой, надо соблюдать корпоративную культуру - за это деньги платят. Но мы не на работе здесь

Когда специалист компании действительно нужен - многие красные флаги как бы отподают сами собой

Только у вас не ER-диаграмма, а сразу физическая модель базы данных минуя логическую.

спасибо, что уточнили. Я посмотрю эти темы

Посмотрите на лицензию ElasticSearch. В последних версиях она не бесплатна. Все переходят на его форк OpenSearch.

Если верить этой статье https://habr.com/ru/news/537610/ то там есть такая фраза, что "На обычных пользователей Elasticsearch, которые используют эту платформу в качестве бэкенда, изменение типа лицензии никак не повлияет."

Надо будет глянуть. Мы там логи храним.

вам НУЖНЫ глубокие знания Python для реализации бекенда.
Причем я говорю не только о базовом синтаксисе и ООП, я имею ввиду еще
навыки решения алгоритмических задач, выбор алгоритма наиболее
приближенного к O(1), умение работать с библиотекой re для
регулярных выражений, умение выполнять HTTP-запросы с помощью библиотеки
requests, знать и понимать, что такое глобальная блокировка
интерпретатора GIL, и многое другое.

Да не особо. Алгоритмические задачи пусть база данных решает сама.

Регулярки для путей тривиальные.

Requests можно за час выучить. Как и прочие библиотеки для запросов.

Про GIL не надо знать, у вас есть Celery, она сама за вас многопоточность разрешит. Ну и сам фласк в один поток работает.

Вы используете много инструментов, которые прячут от разработчика сложность. Можно при средних знаниях языка писать нормальные приложения.

Про GIL не надо знать

Про GIL надо знать, чтобы понимать что происходит, когда мы отправляем письмо через flask-mail. Почему с такой задержкой выполняется!? Именно из этого и возникает потребность в асинхронных очередях, ну или можно реализовать вытесняющую многозадачность с помощью многопоточности, как вариант. Поэтому про GIL надо знать

Вы хотите сказать, что отправка письма из-за GIL тормозит? Если взять версию Питона без него, то письмо уйдёт мгновенно? Асинхронные очереди нужны, чтобы разгрузить работников которые обслуживают пользователей от лишней работы. Это стандартный прием для веб сервисов на разных языках и с разными парадигмами.

Отправку письма через Python можно назвать блокирующей операцией, если мы используем синхронные методы для выполнения этой задачи. Мы будем ждать завершения отправки письма, прежде чем продолжить выполнение другого кода (например, перенаправления на страницу с сообщением об успешной оптравки).

Если взять версию Питона без него, то письмо уйдёт мгновенно?

Можно взять версию Питона с ним и переложить на другой поток, тогда оно уйдет мгновенно.

Можно взять версию Питона с ним и переложить на другой поток, тогда оно уйдет мгновенно.

Чудеса. В главном потоке долго а в другом быстро. Мгновенно будет, если не ждать завершения второго потока и отвечать пользователю сразу.

Чудеса

Я люблю фэнтизи. И не только я один - https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-x-email-support. Цитата из этой статьи:

Python has support for running asynchronous tasks, actually in more than one way. The threading and multiprocessing modules can both do this. Starting a background thread for email being sent is much less resource intensive than starting a new process, so I'm going to go with that approach:

from threading import Thread
# ...

def send_async_email(app, msg):
    with app.app_context():
        mail.send(msg)


def send_email(subject, sender, recipients, text_body, html_body):
    msg = Message(subject, sender=sender, recipients=recipients)
    msg.body = text_body
    msg.html = html_body
    Thread(target=send_async_email, args=(app, msg)).start()

Кстати это пишет один из разрабочичиков нашего любимого Elastic.

Я давно уже понял, что сколько людей - столько и мнений. Также точно и в медицине: один врач ставит тревогу, другой - депрессию, третий - ОКР. И каждый новый говорит, что предыдущий некомпетентен.

Так это именно то о чем я и говорил. Вы не отправляете письмо когда выходите из send_email. Оно потом когда-нибудь отправится и может потеряться при перезапуске сервера.

Видимо мы просто друг друга не поняли. В проекте я использую Celery и не использую этот подход (хотя это вполне возможно сделать).

Увы, есть у меня проблема в ясном изложении своих мыслей

хотя это вполне возможно сделать

Я бы не рекомендовал использовать многопоточность самостоятельно для веба, там могут быть свои заморочки. И GIL не худшая из них. Это такие вещи, где действительно нужны серьёзные знания. Есть гораздо более надёжные и простые решения. Например:

В проекте я использую Celery

Это правильный подход. И еще он избавляет вас от необходимости понимания GIL.

Совет 13: Unittest может быть полезна для простых случаев и тех, кто предпочитает более традиционный подход к тестированию

Пайтестом можно делать всё тоже самое, просто с меньшим количеством слов. Плюс у него много дополнительных вещей.

В последних двух компаниях где я работал, тесты пишутся на обоих, но запускаются через пайтест. У него runner лучше.

Мой совет, используйте только пайтест, никакого юниттест.

соглашусь с вами. Я забыл про это сказать, что unittest можно запустить с помощью pytest.

Также мне нравится система маршрутизации во Flask с помощью Blueprints.
Поставил декоратор на view-функцию с названием эндпоинта и не надо
писать никаких urls.py.

Чуть раньше вы ругали Джанго за магию. Не это ли она самая?

Концептуально мне подход со всеми путями в одном месте нравится больше. Вы всегда можете легко посмотреть все пути, включая технические, пришедшие из плагинов. Явное лучше не явного. Если у вас большой проект и много разработчиков то так сложнее запутаться. Для простого проекта декоратор конечно удобнее.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории