2016-08-01 2 views
0

У меня получилось исключение: «TransportError: TransportError (0): (« Соединение прервано », ошибка (110,« Тайм-аут соединения »))« когда я вызывал api : Virtual_Guest :: getBandwidthTotal.Softlayer API - исключение произошло при вызове softlayer api

Это произошло в этой ситуации:

  1. один же SoftLayer-апи имя пользователя и ключ

  2. Я назвал функций одновременнотысячи раз в один момент.

Таким образом, я не знаю, что исключение произошло из-за «огромных одновременных ави звонков» или просто проблемы с сетью или по каким-либо другим причинам.

Если это вызывает, так как «огромные одновременно API призваний», вот дополнительный вопрос:

Как я говорит до этого я позвонил с одним и тем же именем и ключ, если вызовы одновременно с разные имя пользователя и ключ , произойдет ли это исключение?

ответ

1

Ошибки таймаута обычно генерируются, когда клиент ожидает ответа API, эта ситуация задокументирована here, в вашем случае вы можете попытаться увеличить тайм-аут вашего клиента, если вы используете клиент Softlayer Python, пожалуйста, см. документацию, чтобы увеличить тайм-аут here, а также, пожалуйста, проверьте, что сетевое соединение в порядке.

С уважением

0

Существует ограничение на количество API вызовов, которые могут быть сделаны с помощью учетной записи в секунду. Я считаю, что этот предел для каждого имени пользователя, однако я бы не рекомендовал использовать кучу разных пользователей, чтобы обойти этот предел.

Мое предложение было бы использовать objectMask, чтобы получить как можно больше данных в одном вызове API, вместо того, чтобы делать многочисленные вызовы api.

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

SoftLayer_Account::getVirtualGuests(mask="mask[inboundPrivateBandwidthUsage,inboundPublicBandwidthUsage,outboundPrivateBandwidthUsage,outboundPublicBandwidthUsage]") 

Вы также, возможно, потребуется использовать result Limits так, что один большой вызов не тайм-аут, а также.