У меня проблема с выполнением "премиальных" запросов к API Foursquare.Есть приложение, которое уже некоторое время выполняет запросы, но перестало это делать несколько дней назад.
Вот как это выглядит на примере места (из проводника API):
In [47]: requests.get('https://api.foursquare.com/v2/venues/49eeaf08f964a52078681fe3', params={'client_id': settings.FOURSQUARE_CLIENT_ID, 'client_secret': settings.FOURSQUARE_CLIENT_SECRET, 'v': '20180611'})
2018-06-11 14:37:03,221:DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.foursquare.com
2018-06-11 14:37:03,616:DEBUG:urllib3.connectionpool:https://api.foursquare.com:443 "GET /v2/venues/49eeaf08f964a52078681fe3?client_secret=<SNIP>&client_id=<SNIP>&v=20180611 HTTP/1.1" 429 134
Out[47]: <Response [429]>
In [49]: dict(_47.headers)
Out[49]:
{'Accept-Ranges': 'bytes',
'Access-Control-Allow-Origin': '*',
'Connection': 'keep-alive',
'Content-Length': '134',
'Content-Type': 'application/json; charset=utf-8',
'Date': 'Mon, 11 Jun 2018 14:37:03 GMT',
'Server': 'nginx',
'Tracer-Time': '1',
'Via': '1.1 varnish',
'X-Cache': 'MISS',
'X-Cache-Hits': '0',
'X-RateLimit-Limit': '0',
'X-RateLimit-Path': '/v2/venues/X',
'X-RateLimit-Remaining': '0',
'X-Served-By': 'cache-hhn1536-HHN'}
In [50]: _47.json()
Out[50]:
{u'meta': {u'code': 429,
u'errorDetail': u'Quota exceeded',
u'errorType': u'quota_exceeded',
u'requestId': u'5b1e890f6a60717ee10bf7cd'},
u'response': {}}
Ответ явно связан с ограничениями скорости, но он не соответствует описанию, приведенному в https://foursquare.com/dev/overview/ratelimits или https://developer.foursquare.com/docs/api/troubleshooting/rate-limits. Что еще более важно, он показывает 'X-RateLimit-Limit': '0'
, предполагая, что либо нет предела, либоэто полностью запрещено.
Пользовательский доступ с токенами, созданными пользователями наших приложений, не выполняется аналогичным образом.
Пользовательский доступ с токеном, скопированным из API Explorer, неожиданно работает (но отображаеттот же 'X-RateLimit-Limit': '0'
, что и в случае неудачного ответа выше):
In [56]: requests.get('https://api.foursquare.com/v2/venues/49eeaf08f964a52078681fe3', params={'oauth_token': sample_oauth_token, 'v': '20180611'})
2018-06-11 14:35:00,417:DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.foursquare.com
2018-06-11 14:35:01,066:DEBUG:urllib3.connectionpool:https://api.foursquare.com:443 "GET /v2/venues/49eeaf08f964a52078681fe3?oauth_token=<SNIP>&v=20180611 HTTP/1.1" 200 None
Out[56]: <Response [200]>
In [57]: dict(_57.headers)
Out[57]:
{'Accept-Ranges': 'bytes',
'Access-Control-Allow-Origin': '*',
'Connection': 'keep-alive',
'Content-Encoding': 'gzip',
'Content-Type': 'application/json; charset=utf-8',
'Date': 'Mon, 11 Jun 2018 14:35:01 GMT',
'Server': 'nginx',
'Strict-Transport-Security': 'max-age=31536000',
'Tracer-Time': '257',
'Transfer-Encoding': 'chunked',
'Vary': 'Accept-Encoding,User-Agent,Accept-Language',
'Via': '1.1 varnish',
'X-Cache': 'MISS',
'X-Cache-Hits': '0',
'X-Rate-Limit-Key': '77.49.114.206',
'X-RateLimit-Limit': '0',
'X-RateLimit-Path': '/v2/venues/X',
'X-RateLimit-Remaining': '0',
'X-Served-By': 'cache-hhn1530-HHN',
'X-ex': 'fastly_cdn'}
Наконец, запросы без премиум работают с нашими учетными данными приложения без проблем:
In [59]: requests.get('https://api.foursquare.com/v2/venues/49eeaf08f964a52078681fe3/similar', params={'client_id': settings.FOURSQUARE_CLIENT_ID, 'client_secret': settings.FOURSQUARE_CLIENT_SECRET, 'v': '20180611'})
2018-06-11 14:50:33,378:DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): api.foursquare.com
2018-06-11 14:50:33,790:DEBUG:urllib3.connectionpool:https://api.foursquare.com:443 "GET /v2/venues/49eeaf08f964a52078681fe3/similar?client_secret=<SNIP>&client_id=<SNIP>&v=20180611 HTTP/1.1" 200 None
Out[59]: <Response [200]>
In [60]: dict(_59.headers)
Out[60]:
{'Accept-Ranges': 'bytes',
'Access-Control-Allow-Origin': '*',
'Connection': 'keep-alive',
'Content-Encoding': 'gzip',
'Content-Type': 'application/json; charset=utf-8',
'Date': 'Mon, 11 Jun 2018 14:50:33 GMT',
'Server': 'nginx',
'Strict-Transport-Security': 'max-age=31536000',
'Tracer-Time': '18',
'Transfer-Encoding': 'chunked',
'Vary': 'Accept-Encoding,User-Agent,Accept-Language',
'Via': '1.1 varnish',
'X-Cache': 'MISS',
'X-Cache-Hits': '0',
'X-Rate-Limit-Key': '77.49.114.206',
'X-RateLimit-Limit': '10000',
'X-RateLimit-Path': '/v2/venues/X/similar',
'X-RateLimit-Remaining': '9993',
'X-Served-By': 'cache-hhn1529-HHN',
'X-ex': 'fastly_cdn'}
Любая идея, что такоепроблема квоты / ограничения скорости и как ее исправить?