• Сколько запросов в секунду может обрабатывать telegram бот на long_polling?

    toxa82
    @toxa82
    Думаю тут зависит от скорости обработки запросов вами. Если вы над ответом думаете секунду то это и есть ваша скорость, для long polling.
    Ответ написан
    Комментировать
  • Сколько запросов в секунду может обрабатывать telegram бот на long_polling?

    Когда стоит задуматься о переходе на webhook?

    В принципе изначально следует задуматься о переходе на вебхук. long polling - это больше про разработку, чем про прод.

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

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Такого типа Update нет. Максимум - edited_message, но удаление сообщений сюда не входят. Тем более вряд ли бот ловит апдейты по своим сообщениям
    Ответ написан
    1 комментарий
  • Как создать функцию по замене рисунка в виджете Tkinter?

    @o5a
    Сложно вот так сказать, куда именно добавить изменения среди этих кусков кода, но чтобы картинка сразу изменилась, в управляющей функции надо использовать label.configure
    # запуск изменения картинки
    topImg = PhotoImage(file="new_img.png")
    l.configure(image=topImg)
    l.image = topImg
    Ответ написан
    2 комментария
  • Как избежать ошибки MemoryError?

    @noremorse_ru
    if var_info in key_info:
    заменить на else
    Множества set() тебе зачем? Они сами по себе тяжелые, возьми список
    Ну и самое главное, зачем ты хранишь все в памяти? Пиши результаты в бд или файл. Или ты можешь отправить их на удаленный сервер асинхронно, который запишет в бд, всё зависит на сколько ты далеко хочешь зайти))
    Ответ написан
    2 комментария
  • Как узнать все возможные параметры, которые можно передать объекту?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    В общем случае - никак:

    Пример некоего реального приложения:

    import requests
    
    class SomeService:
          def __init__(self, **my_params):
               self.my_params = my_params
    
         def some_action(self):
               response = requests.get(SOMEURL, my_params)
               return response.json()


    При этом
    service = SomeService(pages=30)
    service.some_action()

    Отработает корректно - так как в запросе передаст то что нужно, так как некий удаленный сервис принимает pages в GET-параметрах. Но из реализации нашего класса SomeService выяснить это невозможно
    Ответ написан
    Комментировать
  • С использованием каких библиотек можно объединить карты и векторный рисунок?

    Viktor_T2
    @Viktor_T2
    python developer
    OpenStreetMap + Matplotlib - более сложный путь.
    Более сильно просто «Экспорт» на веб-сайте OpenStreetMap, которая способна генерировать статическое изображение с размерами и масштабами карты, которые вы хотите:
    https://www.openstreetmap.org/export
    https://wiki.openstreetmap.org/wiki/Export
    Скачивается XML, с помощью Mapnik конвертится в графику.
    https://mapnik.org/
    Ответ написан
    Комментировать
  • Как можно ускорить работу данной программы?

    shabelski89
    @shabelski89
    engineer
    Всё уже объяснили, но от нечего делать положу на блюдечке:
    получаем файлы с россвязи и загружаем их в БД
    spoiler
    import requests
    import os
    import urllib3
    import csv
    import sqlite3
    
    
    source = r'https://rossvyaz.gov.ru/data/'
    abc3 = 'ABC-3xx.csv'
    abc4 = 'ABC-4xx.csv'
    abc8 = 'ABC-8xx.csv'
    def9 = 'DEF-9xx.csv'
    path = os.getcwd() + '\\NP\\'
    db = path + "np.db"
    try:
        os.mkdir(path)
    except OSError:
        pass
    
    file_list = [abc3, abc4, abc8, def9]
    
    
    table = "CREATE TABLE numbering_plan(prefix INT, begin INT, end INT, capacity INT, operator TEXT, region TEXT);"
    with sqlite3.connect(db) as connection:
        cursor = connection.cursor()
        cursor.execute(table)
    
    
    for file in file_list:
        urllib3.disable_warnings()
        r = requests.get(source + file, verify=False)
        open(path + file, 'wb').write(r.content)
        with open(path + file, 'r', encoding='utf-8') as f:
            dr = csv.DictReader(f, delimiter=';', quoting=csv.QUOTE_NONE)
            to_db = [(i['АВС/ DEF'], i['От'], i['До'], i['Емкость'], i['Оператор'], i['Регион']) for i in dr]
            with sqlite3.connect(db) as connection:
                cursor = connection.cursor()
                cursor.executemany("INSERT INTO numbering_plan (prefix, begin, end, capacity, operator, region) "
                                   "VALUES (?, ?, ?, ?, ?, ?);", to_db)



    далее уже все зависит от Вашей обертки ниже код для проверки, опять же коллеги выше это уже писали

    spoiler
    import sqlite3
    import os
    
    
    path = os.getcwd() + '\\NP\\'
    db = path + "np.db"
    
    num = 1
    
    while num:
        num = input('Введите номер в формате ABD/DEАххх ')
        prefix = num[:3]
        number = num[3:]
        search_query = 'SELECT * FROM numbering_plan WHERE prefix=? AND ? BETWEEN begin AND end;'
    
        with sqlite3.connect(db) as connection:
            cursor = connection.cursor()
            cursor.execute(search_query, (prefix, number))
            result = cursor.fetchall()
        print(result)


    скачка и загрузка файлов БД меньше минуты, поиск меньше секунды
    Ответ написан
    Комментировать
  • Как можно ускорить работу данной программы?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    По-моему дичь какую-то придумали...
    Сохраните в базу данных, да делайте выборки....

    что-то вроде:
    PhoneOperator:
        code = CharField()
        name = 
        region = 
    
    PhoneRange:
       minval = BigIntegerField()
       maxval = BigIntegerField()
       operator = ForeignKey(PhoneOperator)
    
    Тогда
    my_operator = PhoneOperator.objects.filter(
        code=my_number[0:3],
        phonerange__minval__lte=my_number[3:],
        phonerange__maxval__gte=my_number[3:]
    )
    Ответ написан
    2 комментария
  • Как можно ускорить работу данной программы?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Знакомый формат, файлы эти явно из выгрузок Россвязи. Я через такие данные прогонял десятки миллионов номеров, причём задачи сделать быстро и эффективно у меня не было.

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

    prefix_code = '495'
    number = '1234567'
    
    for row in data_rows[prefix_code]:
      range_start, range_end, range_size, range_owner, range_region = row
      if number < range_start:
        continue # переходим к следующему
      if number <= range_end:
        print (f"Found {range_owner}, {range_region}")
      else:
        print ("Not found")
      break


    Тут на самом деле номера неявно уже в исходных данных хешированы по трёхзначному коду. Можно для ускорения ещё больше порубить, например, по следующим трём цифрам, но если какие-то из диапазонов будет пересекать границу этих префиксов, то появятся дополнительные сложности.

    Если через базу, то просто сделать запрос в стиле (тут всё в числа переведено, строки не нужны):

    SELECT * FROM ranges_data WHERE prefix_code=495 AND 1234567 BETWEEN range_start AND range_end;
    Ответ написан
    2 комментария
  • Есть ли библиотеки Python для считывания всего текста из Excel документа??

    ulkoart
    @ulkoart
    Есть библиотека openpyxl (дока) можно открыть в ней документ и считать значения в диапозоне от начала до макс строки/столбца.
    Ответ написан
    2 комментария
  • Как лучше изменять стили элемента с использованием JS?

    @FinderOT
    Frontend разработчик
    потому, что в переменной a содержится коллекция элементов с классом `classname` (массив), соответственно ваша функция должна выглядеть следующим образом:
    function change () {
        let a = $('.classname') ;
        a[0].style.fontSize = '50px' ;
    }
    это, если требуется только у первого заменить свойство, если таких элементов много, то перебрать их через метод `.each()` коллекции `a` (https://api.jquery.com/each/)
    Ответ написан
    Комментировать
  • Как лучше всего изучать языки программирования?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Просто берите учебник, читайте полностью, попутно экспериментируя с примерами из книги. Обязательно примеры набирать самостоятельно, а не копировать. Обязательно пытаться их изменять, чтобы убедиться, что вы действительно понимаете, как они работают. После прочтения попытайтесь набомбить пет-проект с использованием изученных технологий.

    Если где-то застрянете, перечитывайте соответствующие главы, читайте официальную документацию, ищите ответы в гугле. Ни в коем случае не несите свою проблему другим людям до тех пор, пока не потратили хотя бы пару-тройку дней на поиск решения. Если ответы вам будет давать кто-то другой, программировать вы не научитесь.

    И не используйте IDE на этапе обучения. Применяйте обычный текстовый редактор и консоль. Во-первых, IDE избавляет вас от рутинных операций, но именно рутинные операции позволяют набить руку . Во-вторых, IDE скрывает многие процессы, выполняя их за программиста, но именно они позволяют понять базовые принципы.
    Ответ написан
    Комментировать
  • Как лучше всего изучать языки программирования?

    Griboks
    @Griboks
    После изучения базы её следует расширять либо углублять. Если вы не видите, в какую сторону, то вы не знаете базу.
    Ответ написан
    Комментировать
  • Как лучше всего изучать языки программирования?

    saboteur_kiev
    @saboteur_kiev Куратор тега IT-образование
    software engineer
    Учиться пользоваться поисковыми системами.
    Вы даже не в первом десятке миллионов "айтишников", которые проходят этот путь. Научитесь искать информацию.
    Пишите дальше. Пишите сложнее.
    Ответ написан
    Комментировать
  • Почему картинки переходят на новую строку?

    Raxen
    @Raxen
    TechLead Frontend Developer, Beeline
    Отвечаю на вопросы из комментариев:
    Что такое флекс?
    - Flexbox(display: flex) это такая технология в css, можно почитать как работает тут, в двух словах - с флексбокс проще компоновать блоки, чем по старинке через float: left, кстати его тоже уберите, флексбокс работает без него.

    - Что было не так:
    У вас инлайн элементы, которые при достижении края, опускаются ниже, если вы добавите в текущий код запрет на перенос строки, тоже будет работать, но флексбокс круче

    Как исправить текущий код?
    aside {
      white-space: nowrap;
    }


    Как переписать на флексах
    aside {
      display: flex;
      width: 80%;
      height: 110px;
      margin: 10px 0px 30px 10%;
      border: 1px ridge Grey;
      border-radius: 15px;
      overflow-x: scroll;
    }
    aside img {
      height: 100px;
      margin-top: 5px;
      margin-left: 10px;
      border-radius: 10px;
      border: 1px solid DimGrey;
    }
    Ответ написан
    Комментировать
  • Почему картинки переходят на новую строку?

    @vchpro
    Задай aside display: flex;. Будет в один ряд, по умолчанию переноситься не будет. И у картинки убери display: inline;.
    Ответ написан
    1 комментарий