Задать вопрос
  • Как можно в callback отправить сообщение с reply клавиатурой?

    @alex-python
    @dp.callback_query_handler(text='текст кнопки')
    async def cmd_get_mes(callback: types.CallbackQuery):
        await callback.answer()
        markup = ReplyKeyboardMarkup(keyboard=[
            [KeyboardButton(text='текст')]
        ], resize_keyboard=True)
        await callback.message.answer('Текст', reply_markup=markup)


    Должно работать. Callback запрос не влияет на логику работы вашей программы. Можете писать, что хотите в функции. Хоть емейл отправлять, хоть к БД подключаться.
    Ответ написан
    Комментировать
  • Как увеличить скорость загрузки данных в Mysql?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Есть базы данных, весит примерно 40 гб. Нужно его восстановить на свой сервер

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

    (я достигал резкого увеличения скорости загрузки когда переключал engine с InnoDb на MyISAM.
    Это было давно. И как щас я не знаю. Может щас появились новые engines которые лучше чем
    MyISAM. Надо читать. Но на тот момент мне транзакции были безразличны. Нужно было просто
    хоть как-то загрузить данные и MyISAM помог).

    Очень хорошо грузится CSV в пустую свеже-созданную таблицу без ничего. Даже не надо объявлять PK.. Лучше потом его активировать и также добавить констрейнты в режиме no check.

    UPD:
    Ответ написан
    Комментировать
  • Как увеличить скорость загрузки данных в Mysql?

    @rPman
    Отключить/удалить индексы, вернуть после полного импорта. Это самое большое ускорение.

    Ещё можно изменить стратегию кеширования данных, дело в том что сервер базы данных слишком щепитильно относится к корректности загружаемых данных, выдавая частый fflush, т.е. принудительную запись данных с ожиданием ее окончания. Это актуально для режима работы с базой но первоначальное наполнение пустой базы можно не боятся сбоев, ведь попытку можно перезапустить с нуля. Например можно изменить режим записи в журнал ext4 на data writeback или лучше средствами виртуализации настроить кеширования диска на -device cache=unsafe для qemu.
    Ещё круче можно настроить bcache с кеширующим диском на ramdisk....

    В общем есть где творчески разгуляться, в итоге можно поднять скорость импорта на порядок, особенно если хватает оперативной памяти
    Ответ написан
    Комментировать
  • Как увеличить скорость загрузки данных в Mysql?

    Stalker_RED
    @Stalker_RED
    1000 строк загружается за 3-4 минуты
    интересно в каком виде у вас данные и как вы их загружаете, вероятно вы делаете что-то сильно не так.
    Откуда у вас вообще цифра 1000, вы построчно вставляете?
    Ответ написан
    2 комментария
  • Как увеличить скорость загрузки данных в Mysql?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    самое быстрое - чтенгие из файла, csv в MyISAM потом замена на innodb или другой движ
    медленнее - убивание индексов из SQL сценария и ручное создание после
    ну и самое медленное AS IS

    а тае настройки до Ж все, в пределах 50% идеале процентов прирост
    Ответ написан
    7 комментариев
  • Как увеличить скорость загрузки данных в Mysql?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    1) Как загружаются данные? Из консоли импортом дампа? Из пхпмайадмина? Из своего кода?
    2) Закомментируйте все строки создания индексов, это сильно ускорит загрузку. Естественно в конце надо будет пройтись и ручками добавить индексы в нужные места.
    3) про конфиг
    To check which configuration files are processed by the server, just execute
    $ /path_to_mysqld/mysqld --help --verbose
    At the beginning of output you will find information about configuration files, e.g.
    Ответ написан
    Комментировать
  • Как увеличить скорость загрузки данных в Mysql?

    @Akina
    Сетевой и системный админ, SQL-программист.
    оффтоп
    Загрузка большого объёма данных через штатные средства резервного копирования - вообще занятие для записных мазохистов. Впрочем, 40 гигов в .SQL - это немного...


    Если база, которую надо скопировать/переместить на другой хост, сейчас жива, доступна, и допускает некоторый даунтайм (необходимый на создание её полной копии в файловой системе), а также версия исходного и целевого серверов совпадает, то следует использовать именно путь переноса файлов данных.

    Если даунтайм недоступен или версии серверов различаются, но исходная база доступна, надо сделать бэкап структуры, и отдельно бэкап данных в формат CSV. Структуру поделить на две части - собственно таблицы и всё остальное. Затем восстановить таблицы, в них скопировать данные, затем наслоить все остальные объекты.

    Если же исходная база недоступна - то запускай развёртывание бэкапа и сиди-жди, другого пути нет.

    На другом форуме нашел решение, мол добавить эти значения:

    Эти значения критично зависят от железа хоста. И на твоём хосте запросто вместо ускорения можно поиметь изрядное замедление.

    Опять же - корректируя innodb_buffer_pool_size, нужно корректировать innodb_buffer_pool_chunk_size и/или innodb_buffer_pool_instances. И вообще - см. https://dev.mysql.com/doc/refman/5.7/en/innodb-buf... (перейди на справку для своей версии, если нужно).
    Ответ написан
    Комментировать
  • Как сохранить сессию Telethon и не вводить код подтверждения заново?

    нужно передать сюда тедефон
    client.start(phone=PHONE)
    тогда телетон сам сохранит и восстановит сессию
    Ответ написан
    1 комментарий
  • Как использовать aiogram + flask (or only aiogram) для обработок платежей в боте телеграм?

    drygdryg
    @drygdryg
    Python-разработчик
    Flask — синхронный WSGI-фреймворк: в нём используется блокирующий ввод-вывод (I/O). aiogram — асинхронный фреймворк: в нём используется asyncio для неблокирующего I/O. Когда вы запускаете Flask-приложение (например, с помощью сервера Werkzeug), вы, говоря простыми словами, блокируете ввод-вывод асинхронному веб-серверу aiohttp, который используется "под капотом" aiogram для обработки входящих webhook-запросов.
    Вы можете запускать Flask-приложение в отдельном процессе (это лучше, чем в отдельном потоке), либо использовать для своего веб-хука сервер aiohttp вместо Flask c тем же aiohttp-приложением, которое использует aiogram, просто добавив в него нужные маршруты и хэндлеры. Пример такого совмещения с aiogram v3: https://github.com/aiogram/aiogram/blob/dev-3.x/ex...
    Ответ написан
    2 комментария
  • Как работать с файлом SQL объемом 20 ГБ?

    @Akina
    Сетевой и системный админ, SQL-программист.
    В комментариях выше фиксируются следующие факты:
    • используемая СУБД - MySQL
    • (вероятно) дамп - MySQL либо MariaDB
    • дамп поделен на несколько частей
    • задача - периодическая

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

    Если дамп выполнялся штатной утилитой (вряд ли иначе), то он содержит кучу комментариев, которые позволяют без особых проблем поделить дамп на отдельные файлы - дамп только структуры и дамп только данных. Даже в автоматическом режиме (программно), и уж тем более вручную. Поскольку нужны данные только по пользователям, то после описанного выше разделения можно безболезненно вырезать всё ненужное из дампа структуры (лишние таблицы, всякие процедуры-функции-триггеры, индексы и внешние ключи - всё это нафиг не нужно при восстановлении, а если нужно для эффективности выборки, лучше создать индексы после заливки данных), а также просто убрать дампы данных ненужных таблиц. И скорее всего объём информации для восстановления после такой чистки уменьшится на порядок, а то и больше.
    Ответ написан
    Комментировать
  • Как работать с файлом SQL объемом 20 ГБ?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Вы выбрали плохой путь по ряду причин.
    Во-первых, вы пытаетесь вычитать весь 20гб файл в оперативную память. Это будет долго, отожрёт кучу свопа и не факт. что завршится успешно.
    Во-вторых, вы пытаетесь запустить весь SQL за один раз - это вы правильно поняли.ч то проблематично.
    Ну а в-третьих...
    В общем, следует глазами посмотреть в SQL и понять что там. Если там дамп БД, то сперва идут стейтменты для содания таблиц, индексов, хранимок, а потом уже операции вставки в эти таблицы.
    Ваш файл называется "часть 3", так что, возможно, часть нужных стейтментов для создания структур просто оказались в других фвйлах.
    Обычно кусок SQL, который создаст все таблицы, не так уж и велик по размеру. Можно открыть файлы с дампом текстовым редактором и вытащить оттуда куски SQL из начала с созданием структуры. Положить эти кусуи в отдельный файл. Иногда в SQL-файле с дампом лежит и команда создания базы, посмотрите внимательно.

    Когда у вас операции вставки данных в БД в отдельном огромном файле, всё тсановится чуточку проще.
    Если у вас задача одноразовая и нужно просто найти один номер и больше ничего, то можно просто воспользоваться командой grep на SQL файле. Она поищет нужный номер и покажет строчки, в которой он встретился. Параметры командной строки могут настроить выхлоп так, чтобы показывались несколько строчек. Это, возможно пригодится, если отдельные стейтменты со вставками занимают по много строк. Так можно быстро найти нужные данные не возясь с поднятием БД.

    Если задача более-менее систематическая, то, конечно, лучше выполнить SQL и занести все данные в БД. Для этого имеет смысл воспользоваться стандартными утилитами, а не городить такой вот велосипед с квадратными колёсами.
    Если описанные действия нужно проделывать в рамках какого-то более широкого автоматизированного процесса, а не одноразово руками, то можно тулзы для БД запускать и из питона, просто системным вызовом консольной команды.
    Ответ написан
    1 комментарий
  • Как работать с файлом SQL объемом 20 ГБ?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Как уже подсказывают, заливать лучше утилитами базы данных.
    Ну и если никак, то коммитьте порциями, например по 1000 записей., а не все сразу
    Ответ написан
    Комментировать
  • Как записать в python значение в txt, если этого значения в нём нет?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Нужно просто включить хоть капельку логики.
    Допустим, есть файл вида и нужный id - 315:
    765
    454
    315

    Приведенный код проверяет наличие id в файле и, что куда более важно, выполняет запись, построчно:
    В первой строке есть нужный id? Нет? -Записываем.
    Во второй есть? Что, тоже нет? Записываем.
    В третьей есть? Ну так и быть - пропустим.

    Решением "в лоб" будет изменение кода так, чтобы в цикле выполнялась только проверка. И если id есть, то код это запоминал. А запись производилась бы уже по завершению цикла.
    Более оптимальных решений два:
    • Хранить id в виде json-файла и при открытии этого файла преобразовывать этот json в структуру данных python (список или словарь). А проверить наличие значения что в списке, что в словаре можно одной строчкой.
    • Использовать СУБД (например встроенную в python sqlite) и проверять id запросом (хотя чисто для хранения id этот вариант избыточен)
    Ответ написан
    1 комментарий
  • Как отснифать запросы в приложении Vk?

    @AlbertForest
    Проблема в том, что любое нормальное приложение (не считая телеграм) не доверяет пользовательским сертификатам и работает только через https, убедившись в безопасности соединения.
    Сделано это как раз для того, что бы не дать вам сделать то что вы пытаетесь.
    Для тестирования таких приложений нужно распаковать приложение, вырезать проверку и снова упаковать.
    Либо использовать инструменты типа frida.
    Но для этого вам как минимум нужно понимать структуру андроид приложений, иметь опыт в реверс-инжиниринге и знать хотя бы js.
    Ну или ооочень хорошо гуглить, но это тернистый путь))
    Ответ написан
    Комментировать
  • Как удешевить расходы на парсинг?

    InternetMaster
    @InternetMaster
    Интернет
    В идеале для 1 интернет-магазина - 1 vps/vds сервер
    Почему? Откуда это значение?

    Разбить парсинг по очереди, а не асинхронно делать, и все готово. 20 парсингов в день - это более 1 часа на 1 магазин в день! Разве одного VPS не хватит?
    Ответ написан
    Комментировать