• Как масштабировать сервис хранения картинок?

    @alenov Автор вопроса
    Подскажите, как это сделать?
    Сервис при сохранении файла генерит и возвращает клиенту его локальное имя, к которому потом клиент приклеивает адрес сервера s.site.ru (он же балансировщик, см. Решение), и получается абсолютное имя. Какой функцией сервис должен сгенерить имя, чтобы оно потом однозначно указывало на адрес сервиса? Причём расшифровку потом должен делать балансировщик, т.е. nginx в своём конфиге, иначе придётся городить ещё какую-то прослойку.
  • Как масштабировать сервис хранения картинок?

    @alenov Автор вопроса
    Спасибо за ссылку на Ceph, интересно.
  • Как масштабировать сервис хранения картинок?

    @alenov Автор вопроса
    Иван Шумов, как совершенно справедливо отметил NewDevLab, у меня уже есть софт и инфраструктура и я хочу просто её масштабировать. Теории насчёт моих технологических возможностей и о том, что я могу/не могу себе позволить не относятся к сути вопроса, который я задал. Лучше помогите с ответом, если знаете что-то по теме, буду очень признателен. Интересует пример конфига, к примеру, на HaProxy (насколько мне известно, такая задача на nginx не может быть решена оптимальным способом из-за ограничений nginx)
  • На что расходуется время http-запроса?

    @alenov Автор вопроса
    Роман Мирр, по существу никаких находок. В итоге удалось слегка повысить производительность путём оптимизации кода. Но это не решение, к сожалению.
  • Как масштабировать сервис хранения картинок?

    @alenov Автор вопроса
    JhaoDa, а что, собственно, смущает?
  • Как установить страницу по умолчанию в nginx?

    @alenov Автор вопроса
    Ошибка:
    *1 rewrite or internal redirection cycle while internally redirecting to "////////////"

    Директивы root нет. Это проксирование на локальный контейнер docker.
  • Как установить страницу по умолчанию в nginx?

    @alenov Автор вопроса
    Не работает. Тот же выхлоп.
  • Как с помощью ps найти основной дочерний процесс?

    @alenov Автор вопроса
    Не вариант. Парсить дерево слишком сложно. Нужно всего лишь так задать параметры, чтобы получить только один "полезный" процесс, без его предка. Вот как?
  • Как с помощью ps найти основной дочерний процесс?

    @alenov Автор вопроса
    Абсолютно с вами согласен. С точки зрения надёжности решение с лок-файлом лучше, чем читать вывод ps. Просто дело в том, что требования к надёжности в данном случае не очень строгие. Поэтому чтение вывода ps вполне подходит. Да и условия эксплуатации скрипта - только cron. Если всё это сложить, да плюс принцип "Не делай то, что не нужно делать" - решение приемлемое!

    Спасибо!
  • Как с помощью ps найти основной дочерний процесс?

    @alenov Автор вопроса
    Да, с lock файлом понятно, такое решение часто предлагается. Только там нужно ещё предусматривать случай, когда процесс падает аварийно, и lock файл остаётся. Нужно писать в него pid, и потом проверять наличие такого процесса. Сложнее. Я хотел просто посчитать дочерние процессы.
    В любом случае спасибо за ответ!
  • Vue.js: почему Vue не видит обновлённые реактивные данные?

    @alenov Автор вопроса
    Не понял что значит "У вас изначально это поле не объявлено,...", но ваше решение помогло!
    Спасибо!
  • Vue.js: почему Vue не видит обновлённые реактивные данные?

    @alenov Автор вопроса
    Поле включено в систему реактивности:

    <v-textarea
       v-model="form.some_field"
    ></v-textarea>


    var vm = new Vue({
        el: '#app',
        vuetify: new Vuetify(),
        data: {
            form: {
               some_field: null,
               ...
               ...
            }    
        },
        ...


    Vue же обновляет его после того, как что-то тронешь на форме!
  • Как найти причину "Exception: idle transaction timeout" в приложении Flask+psycopg2+postgresql+pgbouncer?

    @alenov Автор вопроса
    Melkij, ну хорошо, не буду спорить, при случае попробую ещё раз проверить. Спасибо!
  • Как найти причину "Exception: idle transaction timeout" в приложении Flask+psycopg2+postgresql+pgbouncer?

    @alenov Автор вопроса
    Melkij,
    И да, ещё
    kill -9 любого процесса базы роняет целиком базу в рестарт.

    это не так. Реальная история: есть 2 процесса с idle transaction, и много "SELECT waiting", которые блокированы. Убиваю один процесс из двух - не угадал, картина не меняется, но и база не падает в рестарт. Когда убиваю второй процесс, в котором idle transaction, остальные процессы спокойно отрабатывают и ситуация нормализуется. Сам видел))
    Спасибо за помощь, разобрался с superuser_reserved_connections, буду копать в этом направлении.
  • Как найти причину "Exception: idle transaction timeout" в приложении Flask+psycopg2+postgresql+pgbouncer?

    @alenov Автор вопроса
    Melkij, Не знаю, как в этом убедиться))
    Кстати, ваше замечание по поводу
    Снимать процессы вызовом pg_terminate_backend (а для того не работать суперпользователем и тогда superuser_reserved_connections вам возможность административно подключиться даст)

    Именно этот способ я поначалу использовал. Схема была такая. В кроне запускалась обработка из скрипта, который выполняется в контексте приложения, т.е. в итоге выполнялся запрос как-бы от web-приложения. Postgres, уже имея превышения количества соединений, давал отлуп.

    Про superuser_reserved_connections не знал. Если правильно понял, нужно создать суперпользователя в postgres, от имени которого и запускать эту обработку?
  • Как найти причину "Exception: idle transaction timeout" в приложении Flask+psycopg2+postgresql+pgbouncer?

    @alenov Автор вопроса
    Поставил версию 1.12. Не помогло.

    Вообще, непонятно, как пользователь, который открыл страницу в браузере, может сразу же получить ошибку, которая в логе приложения описывается как idle transaction timeout, если таймаут аж 10 минут? Баунсер использовал для запроса не свободное соединение из пула, а какое-то, в котором уже 10 минут как висит незавершённая транзакция? Как такое может быть??? Или я что-то не понимаю в этой жизни? ))
  • Как найти причину "Exception: idle transaction timeout" в приложении Flask+psycopg2+postgresql+pgbouncer?

    @alenov Автор вопроса
    Ну вообще-то kill-9. Другого способа на боевом сервере, где нужно быстро соображать, не нашёл.
    Версия баунсера 1.7 Похоже, ваша наводка на фикс актуальна, если, конечно, именно из-за этого бага и происходит всё это. Спасибо.
    Вообще, баунсер, как я говорил, был установлен с единственной целью - убивать длинные транзакции, которые почему-то блокировали другие запросы, из-за чего происходило превышение количества соединений. Версия postgres 9.5 такой опции не имеет ещё. Был вдохновлён поначалу этим решением. Но оно оказалось нерабочим, потому что в момент, когда постгрес больше не принимает запросы по причине connection_limit, поздно пить боржоми.
    Как просто удалить (хотя бы и kill-9) idle транзакции другим способом - не нашёл.
  • Как тестировать сервис А, который обращается к сервису Б, не поднимая локально сервиса Б (Python, Flask)?

    @alenov Автор вопроса
    Такое решение в целом приемлемо, но я хотел бы найти способ изолировать тесты от какого-либо внешнего окружения, которое должно быть поднято перед запуском тестов. Проблема в моём случае в том, что обращение к внешнему сервису происходит в декораторе, а не в коде самого теста, где его можно было бы легко мокнуть, например, с помощью responses. Может, есть какое-то решение, которое будет минимально влиять на основную архитектуру? Не очень хочется ставить костыли в виде флага конфигурации типа "test_mode", и перенаправлять запрос в декораторе.
  • Является ли оператор SaaS оператором персональных данных?

    @alenov Автор вопроса
    Это не подходит. Я уже говорил выше: провайдер, у которого я арендую серверы и программное обеспечение, может сделать, не нарушая договор, многое из того, что описано в законе. У него прямой доступ к данным есть. И более того, он делает это постоянно, например, когда переносит данные в резервное хранилище. И его сисадмин может в любое время достать из БД любую запись ПД, о конкретном человеке. Он же от этого не становится оператором ПД! "Может" в данном контексте не равно "Делает", потому что эти действия не входят в условия договора, который провайдер заключает со мной, как с арендатором.

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

    то мне неясно, какое это имеет значение. Одна запись с персональными данными человека - это ПД, несколько записей, перенесённые в файл - это тоже ПД, несколько таких файлов, сброшенных на резервный сервер в виде zip-архива - и это тоже ПД. Способ их хранения в законе никак не оговорен, а потому значения не имеет.
    И к тому же для моего сервиса ПД - это всего лишь требование к функционалу, который предназначен для решения задачи обработки ПД. Возвращаясь к вышесказанному: компания, производящая автобусы для перевозки пассажиров, не становится перевозчиком пассажиров только потому, что смысл её работы - создать средство (оборудование), обеспечивающее удобную и безопасную перевозку пассажиров.
    Мы с вами можем долго дискутировать, но мне не это нужно. Я хочу узнать, есть ли в законе о ПД такое место, которое конкретно в моём случае проводит чёткую границу между мной и моим клиентом, и между провайдером и мной, в вопросе обработки ПД. Ваши доводы мне пока в этом не помогли, к сожалению. Но тем не менее - спасибо за желание найти истину))
  • Является ли оператор SaaS оператором персональных данных?

    @alenov Автор вопроса
    Алексей Андреев, Постойте, мы с вами, кажется заплутали))
    Ещё раз, с самого начала. Я предлагаю сервис в секторе b2b. Сервис - это просто программное обеспечение, на котором работает мой клиент. Я отвечаю только за то, чтобы этот сервис работал в режиме 24/7, и обеспечивал весь заявленный функционал.
    ВСЁ! НИКАКИХ агентских функций по распространению моего сервиса я на своих клиентов не возлагаю. Мои услуги - это техническая поддержка работы сервиса, и мой клиент не продаёт мои услуги своим клиентам. Он продаёт им товары, не имеющие к моему сервису ровно никакого отношения. И по ходу он собирает со своих клиентов ПД.

    Вообще, здесь, как у нас это обычно бывает в законодательстве, явная недоработка. Вот например, провайдер, о котором я упомянул. Я специально задавал вопрос своему провайдеру: Если я на своём сайте буду хранить ПД своих посетителей, вы как провайдер будете являться оператором ПД? Они мне ответили - однозначно нет! Но если обратиться к закону, к тому пункту, который вы привели, то всё не так однозначно. Ведь данные фактически храню не я, а провайдер, на серверах, которые принадлежат ему, и к которым он имеет прямой доступ. К тому же он выполняет ежедневное резервное копирование всего, что есть на сайте, перенося это в резервные хранилища. Но я никогда не видел на чьём-либо интернет-ресурсе, где я оставляю свои персональные данные, трёхстороннего договора, где одной из сторон был бы провайдер, у которого он "хостится". Или двустороннего договора, где бы ресурс говорил мне, что он передаёт мои персональные данные для обработки третьему лицу, под которым подразумевается именно провайдер.
    Т.е. есть сайт продавца зимних шапочек, который собирает с покупателей их ПД, и есть провайдер, который обеспечивает техническую сторону, и в целом очевидно, что провайдер не является оператором ПД. А это значит, что есть граница, на которой закон о ПД перестаёт действовать для провайдера. Так вот где она, эта граница?