Задать вопрос
  • ERROR:asyncio:Task exception was never retrieved как можно исправить?

    shurshur
    @shurshur
    sousagemonster, покажи код, гадать что происходит в коде, который мы не видим, довольно бессмысленно.
  • Кластеризация дискорд бота, как?

    shurshur
    @shurshur
    Вадим Ушаков, специализация тут ни при чём. Просто на таких объёмах сделать тяп-ляп точно не получится.

    Это всё вопросы к чему? Есть реальный бот с такими нагрузками? Или это просто интерес к технологиям highload? По этим технологиям в интернетах тучи разных статей.
  • Где и как применять классы?

    shurshur
    @shurshur
    Владимир Коротенко, я прочитал как тип, что логично, так как противопоставляется тоже тип.
  • Технический нейминг серверов. По какому принципу называть сервера?

    shurshur
    @shurshur
    Алексей Арх, мы вводили в действие две новые площалки и поставили на одну из них первые XXXsrv00 и XXXsrv01, а на другую - XXXsrv02 и XXXsrv03. Потом имевшиеся старые сервера на Solaris постепенно превратили в XXXsrv03...XXXsrv13, за одним замечанием: XXXsrv07 был старым слабым сервером и был выведен из эксплуатации сразу же по завершении миграции. Потом когда ещё какой-то старый сервер переквалифицировали в сервер этой платформы, он стал XXXsrv17, а не XXXsrv07. Недавно вывели из эксплуатации XXXsrv04 и XXXsrv05, заменили на XXXsrv22. Нас дырки в нумерации не поугают. Наоборот, наша специфика как раз в том, что лучше новому серверу (не аналогичному на замену - такое тоже бывало при разных миграциях, или вот у одного сервера были аппаратные проблемы и его заменили из зипа) дать новый номер, нам это удобнее.

    Всё равно же если серверов [буква]XXXX-YYYYsrv[номер] больше одного


    Такое длинное имя есть только в hostname сервера. Его в DNS нет и никто им никогда не пользуется. Двух таких не бывает. Тут тоже, кстати, элемент специфики: железками и первичной установкой серверов у нас занимается практически только один человек, и он не путается в начальной подготовке, а мы уже не путаемся в том, что получилось.

    а если их больше 50, то точно не запомнишь и нужно таблицу открывать


    У нас их больше 50, но на одну платформу приходится от 2 до ~20. Мы не путаемся. Я же говорю - у каждого своя специфика.
  • ERROR:asyncio:Task exception was never retrieved как можно исправить?

    shurshur
    @shurshur
    Так flood control. В исключении даже ответ Телеграма, что надо 25 секунд подождать.

    Рекомендую ловить это исключение и в обработчике делать паузу например на 30 секунд, а затем повторять действие.
  • Как определить язык написанного сообщения на discord.js?

    shurshur
    @shurshur
    Да, если задача определять только для русского и английского языка, то всё гораздо проще: алфавиты языков не пересекаются, и можно просто считать число русских и английских букв в словах и относить к тому языку, буквы которого использваны в слове, например, минимум на 60%.
  • Кластеризация дискорд бота, как?

    shurshur
    @shurshur
    Вадим Ушаков, например, сделать приём событий через webhook на балансер, который по хешу id гильдии будет кидать на один из N инстансов бота. Но если у тебя реально есть проект уровня миллионов активных клиентов, то тебе лучше нанять хорошего специалиста, а не пытаться костылять непойми чё на коленке.
  • Какие критерии выбора онлайн-чата для сайта (онлайн-консультанта)? Что важно? На что обратить внимание?

    shurshur
    @shurshur
    Александр Фалалеев, наколенные решения подойдут, когда всегда доступен хорошо понимающих их админ, а количество обращений невелико. Если там обращаются тысячи человек в сутки, которых надо распределять по тематикам и уровням компетенций десятков операторов, то это, увы, не подходит.
  • Технический нейминг серверов. По какому принципу называть сервера?

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

    Например, у моего работодателя все сервера имели красивые трёхбуквенные названия (bux, dix, kex итд), а виртуалки на них (точнее зоны Solaris) уже именовались z[назначение][номер]. По мере роста концепция поменялась, теперь сервера именуются [буква]XXXX, где XXXX - инвентарный номер, а буква отражает общее назначение (например, b - балансер, v - сервер с виртуалками, k - нода kubernetes). Предлагали ещё добавлять в конце букву с обозначением датацентра, но это не прижилось, тем более сервера могут переезжать с места на место, а физическое размещение в основном нужно знать только выделенному админу по железякам и начальнику отдела, для этого в вики есть красивая таблица по каждой стойке с точным описанием что в каком порядке идёт. У многих серверов есть алиасы по их назначению вида YYYYsrv[номер] либо на основной адрес сервера, либо на адрес в отдельном vlan соответствующего проекта. Реальный hostname сервера содержит оба имени: [буква]XXXX-YYYYsrv[номер] - поэтому заходом на сервер или опросом их через ansible всегда можно понять, где что. Иногда физический сервер меняется (и, соответственно, инвентарник), а его чаще всего используемое админами имя по на значению сохраняется. В завершение отмечу, что некоторые сервера по историческим причинам именовать по-новому не стали. Например, почти все базы данных имеют привычные старые имена, но их немного и они обслуживаются выделенными DBA.

    Но подобная практика подойдёт далеко не всем. Например, если есть много проектов с малым числом серверов на каждом, или если сервера вперемешку используются на разных проектах (например, выбираются из соображений необходимого объёма памяти или наличия CUDA для работы нужного приложения), или сервера виртуальные и создаются в облаках по мере необходимости, то задачи перед именованием серверов могут стоять совсем другие.
  • Как научить бота в ВК рать информацию с сайта?

    shurshur
    @shurshur
    Этот вопрос никакого отношения к ботам не имеет. Парсинг сайта - это самостоятельная задача.
  • Как найти бекдор на сервере Линукс?

    shurshur
    @shurshur
    mrmourax, ещё лучше освоить ansible, чтобы сервер можно было развернуть буквально с нуля по готовым правилам.
  • Как найти бекдор на сервере Линукс?

    shurshur
    @shurshur
    Император Зиззл, лет 10 назад боты не находили ssh на нестандартных портах, лет 5 назад находили нескоро, сейчас же найти его могут в считанные дни.
  • Как проверить, что число состоит из цифр от 0 до 5?

    shurshur
    @shurshur
    99sun66, завести переменную result = "YES", которую в цикле поменять на "NO" если будет цифра больше 5. В конце если ни одна цифра не будет больше 5, то переменная не поменяет значение.
  • Как проверить, что число состоит из цифр от 0 до 5?

    shurshur
    @shurshur
    А что ты хотел? Есть цикл по цифрам и в каждой итерации цикла делается print.

    Подскажу: идём по циклу, если встречаем цифру больше 5, то дальше цикл не имеет смысла, ответ уже известен. Если мы дошли до конца цикла и ни разу не встретили цифру больше 5, то становится известен другой ответ.
  • Systemd сервис/служба останавливается по непонятной причине. Почему?

    shurshur
    @shurshur
    ALLIGATOR, я не джедай по systemd и проблемы с ним обычно решаю с помощью гугла. Подозреваю, что при слишком быстром падении сервиса он его не рестартует вообще или рестартует со слишком большим интервалом.

    Гугл подсказывает параметры StartLimitIntervalSec, StartLimitBurst. Можно посмотреть какие сейчас systemd show myservice.

    Вот тут есть примеры настройки: https://serverfault.com/questions/736624/systemd-s...
  • Что писать в резюме чтобы были шансы куда-то попасть без опыта?

    shurshur
    @shurshur
    На собеседовании слишком заметно будет, что это не так, что только уменьшит шансы.
  • Systemd сервис/служба останавливается по непонятной причине. Почему?

    shurshur
    @shurshur
    ALLIGATOR, скорее всего mysql падает, а приложение не умеет корректно это обрабатывать. При этом база рестартует не моментально, а сервис достаточно быстро, и коннект к базе становится неудачным. После нескольких неудачных рестартов приложения (которое сразу же падает опять) systemd перестаёт его рестартить часто. Можно смотреть настройки по частоте и количеству перезапусков упавшего сервиса. Но я бы попробовал научить приложение переживать разрыв соединения с базой.

    Я решал похожую проблему, вынес работу с базой (Oracle) в отдельный класс, который при исключениях базы переустанавливал коннект к ней и повторял запрос.

    def _execute(self, query, params):
        if params:
          self.cc.execute(query, params)
        else:
          self.cc.execute(query)
        return self.cc
    
      def execute(self, query, params=None):
        self.connect()
        try:
          self._execute(query, params)
        except (cx_Oracle.OperationalError, cx_Oracle.DatabaseError):
          self.db = None
          self.connect()
          self._execute(query, params)
        return self.cc
  • Systemd сервис/служба останавливается по непонятной причине. Почему?

    shurshur
    @shurshur
    ALLIGATOR, если других данных нет то посмотреть насколько быстро он падает. Возможно сразу. Там virtualenv случайно не используется?