У нас есть работающее решение, которое взаимодействует с Twitter API. Конечная точка Twitter API:
api.twitter.com
Мы делаем много вызовов конечной точке, но очень редко достигаем каких-либо ограничений API, определенных Twitter.
Я предполагаю, что Twitter имеет балансировщик нагрузки, настроенный на этом URL-адресе и выполняющий внутреннее перенаправление на разные машины.
Решением является приложение .Net, частично исполняемый файл, который выполняет опрос данных, и веб-приложение, которое используется для ответа и публикации твитов.
Раз в неделю (иногда чаще) в течение нескольких часов мы получаем следующее исключение, регистрируемое в файлах журнала из нашего исполняемого файла и веб-приложения.
Inner Exception : System.Net.WebException: Unable to connect to the remote
server ---> System.Net.Sockets.SocketException: A connection attempt failed
because the connected party did not properly respond after a period of time,
or established connection failed because connected host has failed to
respond 185.45.5.33:443
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.GetResponse()
at Hammock.Web.WebQuery.ExecuteGetDeleteHeadOptions(WebRequest request, WebException& exception) in f:\src\hammock\src\net35\Hammock\Web\WebQuery.cs:line 1021
... Ommited rest of exception ...
Когда я делаю NSLOOKUP
с самого Сервера у меня есть следующий результат
>nslookup api.twitter.com
Server: 4201082000200000000g00g021.ip.ssc.net
Address: 2001:820:2::9:218
Non-authoritative answer:
Name: api.twitter.com
Addresses: 185.45.5.33
185.45.5.44
Каждый раз, когда я ищу неисправный 185.45.5.33
сервер указан, и присутствует только один альтернативный IP-адрес.
Примечание: у нас есть только эти два IP-адреса с нашего рабочего сервера, с других машин (в разных странах) nslookup
возвращает по крайней мере 4 IP-адреса в диапазоне 199. *.
>nslookup api.twitter.com
Server: kdns1.task.gda.pl
Address: 213.192.64.1
Non-authoritative answer:
Name: api.twitter.com
Addresses: 199.16.156.104
199.16.156.72
199.16.156.231
199.16.156.8
В эти ошибочные периоды я пытался отредактировать C:\Windows\System32\Drivers\etc\hosts
файл с этой строкой
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
185.45.5.44 api.twitter.com
Но это, похоже, не работает, проблемы просто продолжаются. Хотя проблема, вероятно, связана с их серверами в Твиттере, наша функциональность полностью перестает работать. Поэтому нам нужно действовать более активно, а не ждать, пока Твиттер решит проблему.
Возможно, это даже не лучший способ решить эту проблему, но у нас есть На данный момент. Мы наняли человека, способного справиться с этими операциями, но он не начнет работу раньше декабря. Поэтому любой совет для ограниченного опытного человека был бы очень признателен за временное решение этой проблемы.
Итак, есть ли у кого-нибудь предложения или зацепки, которые могли бы помочь нам решить эту проблему с нашей стороны наилучшим образом?
Я не против броситься читать статьи, но подсказка или толчок в правильном направлении были бы мне большим подспорьем.
Спасибо за уделенное время
Короткий ответ: нет.
Вы можете сделать очень мало для устранения проблем со сторонним поставщиком, кроме как уведомить своих пользователей о наличии проблем с вышестоящим сервисом.
Вы можете отображать описательные сообщения об ошибках, такие как «Возникла проблема при обмене данными с Twitter, пожалуйста, подождите.», Или молча отклоняя ошибку и повторите попытку через некоторое время.
Для более длительных периодов простоя я бы посоветовал отображать уведомление для ваших пользователей во всем мире в приложении.
В дополнение к этому, я очень сомневаюсь, что у API Twitter так много проблем - вы, вероятно, каким-то образом ограничены по скорости. Я настоятельно рекомендую вам связаться с Twitter и обратиться в службу поддержки.