Я бы с радостью получил совет, что делать в этой ситуации, но у меня также есть идеи, как это можно было бы решить лучше.
Что может происходить
Одна из теорий заключается в том, что наш сервер был идентифицирован YouTube как потенциально занимающийся фармингом музыкальных видео, и нам ограничили доступ или заблокировали его.
Мы — совершенно незаметный маленький форум в Великобритании с ничтожным трафиком, но у нас есть несколько тем (на самом деле одна, разбитая на две из-за размера) с 10 тысячами и 2 тысячами сообщений о музыкальных видео. Это музыкальная цепочка, где следующий пользователь просто публикует песню, связанную, часто лишь косвенно, с предыдущим постом.
Конечно, у нас есть и другие темы со ссылками на YouTube, но эта особенно (~100%) насыщена музыкой.
После пересборки в выходные я предполагаю, что YouTube проанализировал активность Oneboxer’а, пытавшегося получить заголовки для множества музыкальных видео, и его алгоритм поставил нас на «наказательную скамейку».
Позже я попытался снова выполнить пересборку постов, что, вероятно, подтвердило подозрения YouTube в том, что мы с этого IP-адреса пытаемся только скачивать музыкальные видео.
Возможно, это связано с Digital Ocean
Если поискать ошибки 429 на YouTube, игнорируя все результаты по YouTube API, то в итоге можно найти группу похожих проблем, где говорится, что их IP-адреса были добавлены в серый/черный список или забанены из-за использования виртуальных серверов. В частности, упоминалось название Digital Ocean.
Предполагается, что YouTube может «забанить» серию IP-адресов, и другие легитимные серверы часто попадают под удар как collateral damage (побочный ущерб).
Вот одна из таких проблем и возможное решение.
https://support.google.com/youtube/thread/21697789?hl=en
А вот еще одна от разработчика с medium.com, работающего над embed.ly API.
https://support.google.com/youtube/thread/21939228?hl=en
В первом посте в качестве рекомендуемого решения предлагалось отключить IPv6 на дроплете.
Знает ли кто-нибудь, насколько это вероятно, или вызовет ли это какие-либо проблемы?
Я пока воздерживаюсь от этого действия, чтобы собрать любые другие данные, которые могут потребоваться для решения проблемы.
Что должно происходить?
Во-первых, я понимаю, что реакция здесь, скорее всего, будет такой: мой случай — это крайняя ситуация, и никаких изменений не требуется.
Я это понимаю. Но если @marcozambi и я обнаружили одну и ту же проблему за относительно короткий период, это может означать, что с этим столкнутся и другие. Возможно, YouTube недавно стал более строгим в контроле за встраиванием?
Я прошу вас помнить, что в данный момент мой форум находится в полном подвешенном состоянии. У меня десятки тысяч ссылок, которые не были обработаны через Onebox, но я не знаю, где они находятся, и могу придумать только полную пересборку, чтобы найти их все, что почти наверняка привлечет еще больше негативного внимания со стороны YouTube.
По крайней мере, Onebox не должен молчать при ошибке ограничения скорости (rate-limit). Он должен привлечь внимание администраторов и, по возможности, приостановить процесс, вызвавший проблему ограничения скорости.
Варианты привлечения внимания владельца форума
Я не думаю, что это легко. Совсем нет.
Я вижу, что Onebox выполняет несколько совершенно разных ролей:
a) создает Onebox в реальном времени при составлении постов,
b) обрабатывает пересборку старых постов (часто с уже известными ссылками) в фоновом режиме и без участия пользователя,
c) обрабатывает массовые фоновые задания во время миграции или пересборки.
Если ошибка ограничения скорости произойдет в сценарии a), то автор заметит, что Onebox не развернулся, и может пожаловаться администраторам форума — проблема может быть замечена. Также, возможно, можно перехватить единичную ошибку во время составления и отправить уведомление или сообщение администраторам?
В сценарии b) сбой может произойти во время фоновой обработки поста, поэтому его нужно либо повторить, либо, если лимит повторений исчерпан, зафиксировать сбой и уведомить администраторов форума.
В сценарии c) необходимо учитывать более широкий контекст множества одновременных сбоев. На данный момент я не считаю, что существует какой-то общий контроль над процессом пересборки постов, чтобы 10 000 ошибок 429, возвращаемых Onebox, могли быть распознаны как более серьезная проблема, чем отправка 10 000 отдельных сообщений администраторам.
В реальности такой сбой означал бы, что все вызовы Onebox для расширения видео YouTube (возможно, и других провайдеров) должны быть приостановлены, пока мы не снимем ограничение скорости.
Альтернативные подходы
Ограничение исходящих запросов
Я предполагаю, что принцип «предотвращение лучше лечения» может диктовать необходимость установки ограничителя скорости (rate-limiter) в Discourse перед запросами, чтобы Discourse мог удерживать запросы на основе настроек конфигурации.
Это создаст хаос при пересборках и миграциях.
Onebox Assistant
Возможно, всем нам нужны коммерческие отношения с организациями, которые кэшируют и проксируют встраиваемый контент, например, тот, который использует @merefield в своем плагине Onebox Assistant?
Включение ‘бота’ в белый список
Может быть, мы сможем найти способ включить ‘бота’ Discourse в белый список YouTube? Вероятно, это слишком открыто для злоупотреблений.
YouTube API
Так же, как Onebox работает с Twitter, возможно, мы могли бы использовать YouTube API, если там лимиты выше?