• Как в питоне обеспечить контроль целосности данных?

    @semenovs
    QA mobile, bh
    Нестандартное решение:
    from sqlalchemy import Column, Integer
    from sqlalchemy.ext.declarative import declarative_base
    
    Base = declarative_base()
    
    class MyTable(Base):
        __tablename__ = 'my_table'
        id = Column(Integer, primary_key=True)
        field_byte = Column(Integer)
        field_short = Column(Integer)
        # Другие поля
    
    # Пример использования
    value = 300
    
    # Создание экземпляра класса
    my_object = MyTable(field_byte=value)
    
    # Вставка в базу данных
    session.add(my_object)
    session.commit()


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

    @semenovs
    QA mobile, bh
    Сервисы облачных парсеров, такие как CloudParser или TurboParser, предоставляют инфраструктуру, которая обеспечивает возможность работы с большим количеством пользователей одновременно.

    Здесь есть несколько ключевых технологий, которые используются для обеспечения этого:

    Масштабируемость: Эти сервисы обычно используют облачные сервера, которые могут быть быстро масштабированы в зависимости от нагрузки. В современных облачных решениях, таких как AWS, Google Cloud, Azure и другие, можно автоматически добавлять или удалять серверы в зависимости от текущего количества пользователей и их действий.

    Распределенная архитектура: Каждый пользовательский запрос обрабатывается отдельными экземплярами парсера, работающими параллельно на разных серверах или даже внутри одного сервера, но в разных контейнерах или виртуальных машинах. Это обеспечивает высокую производительность и отказоустойчивость.

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

    Кэширование: Для уменьшения нагрузки на парсеры, результаты парсинга могут кэшироваться и переиспользоваться для нескольких пользователей. Если два пользователя запрашивают данные с одного и того же сайта, вместо того чтобы парсить сайт дважды, сервис может использовать уже полученные данные.
    Ответ написан
    Комментировать
  • Как получить поле из JSON?

    @semenovs
    QA mobile, bh
    import requests
    
    url = "http://search.maps.sputnik.ru/search/addr"
    params = {'format': 'json', 'q': 'Песочная аллея, дом 1'}
    rq = requests.get(url=url, params=params)
    location = rq.json()['result']['viewport'].values()
    print(list(location)[0:2])

    61185ce8d0ea7765523774.png
    Ответ написан
    Комментировать