Ответы пользователя по тегу Flask
  • Как исправить ошибку декодирования UTF-8 в Python?

    Попробуй выполнить python3 -c "import socket;print(socket.getfqdn())"
    Если будет падать так же, то проблема в имени хоста. Если оно кириллическое, то надо сменить на латиницу.
    Ответ написан
    8 комментариев
  • Как на shared хостинге разместить несколько фласк приложений на одном сайте?

    Взять, скажем, Nginx или Apache (mod_wsgi) в качестве фронт-вебсервера. Проекты на Flask располагать в разных директориях.
    Ответ написан
    Комментировать
  • Как с помощью Flask сделать динамический вывод данных из txt файла?

    Клиент может получать информацию по SSE порциями строк из файла. Для этого можно открыть процесс, запустив tail -f file.txt и читать построчно с stdout. Каждую строку или сразу несколько отправлять в стрим клиенту.
    https://man7.org/linux/man-pages/man1/tail.1.html
    Ответ написан
    Комментировать
  • Asyncio очень медленно работает во Flask?

    Есть 3 endpoint во flask, которая возвращает json. Есть 4-й endpoint, который асинхронно обращается к 3-м выше и собирает итоговый json.
    Зачем? Используй очередь сообщений и отдельный процесс для сбора данных с fetch_url. Клиент не должен ждать пока данные будут получены. Вместо этого для получения результатов можно использовать запросы short polling к серверу или сервер будет сам уведомлять через SSE.
    Ответ написан
    Комментировать
  • Почему неправильно кодируются запросы Flask?

    Предполагаю, проблема в том, что нужно кодировать в корректный путь URL:
    @app.route('/test/%D0%BA%D0%B8%D1%80%D0%B8%D0%BB%D0%BB%D0%B8%D1%86%D0%B0')
    Ответ написан
    Комментировать
  • Ошибка в сервере на Flask, Python. Как решить?

    Попробуйте преобразовать в массив байтов
    return data.encode('utf-8');
    Ответ написан
    Комментировать
  • Как по нажатию кнопки инициировать http запрос (flask, requests, json)?

    Взять HTML форму, заполнить данные. Написать обработчик формы на JS, в котором при нажатии на Submit сформировать это в объект, который отправить AJAX запрос в сериализованном виде при помощи JSON.stringify().
    Ответ написан
    Комментировать
  • Что считаете долгим запросом на стороне веб-сервера?

    Нужно смотреть не только на частный ответ, но и на количество запросов и занимаемое время. Если на 1 запрос отдается ответ 500мс и это крупный отчет, то вполне приемлемое время. А если это лишь десятая часть от всех запросов и от этого тормозит отрисовка на клиенте, то это никуда не годится. Оптимально отдать ответ так, чтобы клиент получил его до 100 мс. Свыше этого клиент уже замечает время отклика.

    Тело GET запроса 835кб
    Это довольно большой размер для ответа и поэтому требуется сначала его сформировать, а потом отдать клиенту.
    Можно вместо этого заранее формировать ответ (в фоне очередями), а при запросе - отдавать готовый ответ. Или если возможно, ставить задачу в очередь и информировать клиента о необходимости ждать и тогда по выполнении задачи выдать ссылку на скачивание или на месте выдать готовый ответ.

    уходит 0,36сек - 0.4cек, из них на преобразования результатов из Redis в коде Python 0.26сек (преобразование байтов в строку, строки в структуру вложенных списков, проход по этим спискам и т.д.)
    Возможно, в Redis данные хранятся в неоптимальном виде. Может, надо подумать как хранить так, чтобы обработка данных не занимала так много времени. А, может, вообще, хранить данные в реляционной СУБД. Попробовать сохранить данные в материализованном представлении, чтобы не тратить время на отдачу ответа.
    Ответ написан
    Комментировать
  • Как оптимизировать и ускаорить данный запрос к базе данных MySQL Zabbix?

    2-я строка в EXPLAIN говорит, что СУБД должна пройтись по всем 958 тыс. записей для того, чтобы выбрать из них нужные по условию where. Насколько я понимаю, WHERE events.name = %s.
    Предлагаю производить выборку не по полю name, а по тому, у которого есть индекс. Или создать индекс по name и другим полям, по которым производится поиск..

    Также можно использовать партицирование таблицы events.

    Если и этого не хватит, то из-за тяжелых запросов к СУБД имеет смысл создать дополнительную таблицу, которую обновлять планировщиком задач. Она будет представлять из себя материализованное представление, оптимизированное для обращений веб-приложения.
    Ответ написан
    Комментировать
  • Как сделать доступ к серверу из разных сетевых устройств?

    Нужно чтобы сервер слушал соединение на хосте 0.0.0.0
    Ответ написан
    Комментировать
  • Как отобразить pdf файл на новой странице?

    Нужно указать подходящий HTTP заголовок Content-Disposition
    Ответ написан
    Комментировать
  • Не создаётся база данных SQLite python?

    Правильный префикс соединения с Sqlite такой (пропущено двоеточие):
    sqlite://


    # Unix/Mac - 4 initial slashes in total
    engine = create_engine('sqlite:////absolute/path/to/foo.db')


    https://docs.sqlalchemy.org/en/13/core/engines.htm...

    Если стоит 3 слэша, то установлен текущий путь приложения.
    Ответ написан
    1 комментарий
  • Как разработать веб-приложение?

    Суть следующая: посетитель заходит в приложение и в поле вводит номер своей виртуальной "скидочной" или просто "персонифицированной" карты (тем самым регистрируя или активируя её). Номера для карт должны генерироваться и выдаваться менеджерам для привлечения новых клиентов.
    Вот это требование нужно продумать и от этого плясать дальше.
    Прежде нужно понять бизнес-процессы.
    В качестве менеджера (роль пользователя в БД) я захожу туда-то, делаю X и получаю Y.
    В качестве клиента (роль пользователя в БД) я захожу туда-то, делаю X и получаю Y.
    Расписываешь действия, которые выполняет пользователь, что видит на экране, как взаимодействует через интерфейс и т.д.

    Строишь макет интерфейса.
    https://careerfoundry.com/en/blog/ux-design/how-to...
    https://uxplanet.org/basic-ui-ux-design-concept-di...
    Старайся сделать всё просто, минимально и при этом функционально. Не нужно гнаться за JS-фреймворками - они обычно лишь добавляют сложности. Если на странице простая форма для ввода данных с валидацией полей, то ничего не нужно добавлять, а использовать разве что какие-то библиотеки для облегчения труда. Если есть несложная логика интерфейса, возможно достаточно какого-то движка шаблонов типа Handlebars.

    Номер карты обычно считывается с магнитной полосы или чипа. Нужно генерировать номера карт. Для этого нужно знать что представляет из себя этот номер и есть ли какие-то правила для его генерации.
    Если просто произвольная последовательность цифр, то это тривиально.
    Продумай какой тип данных нужен для хранения в СУБД, что будет находиться в таблице, при разных сценариях как будет использоваться (находиться).

    Для работы с СУБД берется ORM, например SQLAlchemy или другой.
    Ответ написан
    Комментировать
  • Как организовать мониторинг web приложения?

    Подходящие NMS - для мониторинга доступности служб в пределах локальной сети или через интернет.
    Prometheus/InfluxDB + Grafana - сбор числовых показателей приложения и построение графиков.
    ELK - сбор и поиск по логам.
    Или их аналоги в виде облачных служб.
    Ответ написан
    Комментировать
  • Как освободить RAM на web-сервере uwsgi?

    Обработку изображений лучше сделать асинхронной, занося задачу в очередь сообщений.
    Обработчик очереди будет работать в отдельном процессе. Если обработка изображения занимает много памяти, то, возможно, можно её сильно оптимизировать.
    А что за обработка, если не секрет? Масштабирование? Приведение к единому формату файлов?
    Ответ написан
    5 комментариев
  • Как сделать проверку загружаемых на сервер файлов на flask?

    При загрузке через HTTP POST будет получен content_type (Mime type). Нужно проверить является ли "image/png".
    Насчёт остального: как ответил Михаил Олейников.
    Ответ написан
    Комментировать