Skip to content

Commit 6ca91c0

Browse files
authored
Merge pull request #471 from splitio/async-client-factory
Added async to factory
2 parents ccdc9b6 + 194add1 commit 6ca91c0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+11362
-1877
lines changed

splitio/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
from splitio.client.factory import get_factory
1+
from splitio.client.factory import get_factory, get_factory_async
22
from splitio.client.key import Key
33
from splitio.version import __version__

splitio/api/client.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import requests
44
import urllib
55
import abc
6+
import logging
7+
import json
68

79
from splitio.optional.loaders import aiohttp
810
from splitio.util.time import get_current_epoch_time_ms
@@ -12,6 +14,8 @@
1214
AUTH_URL = 'https://auth.split.io/api'
1315
TELEMETRY_URL = 'https://telemetry.split.io/api'
1416

17+
_LOGGER = logging.getLogger(__name__)
18+
1519

1620
HttpResponse = namedtuple('HttpResponse', ['status_code', 'body', 'headers'])
1721

@@ -242,13 +246,20 @@ async def get(self, server, path, apikey, query=None, extra_headers=None): # py
242246
headers.update(extra_headers)
243247
start = get_current_epoch_time_ms()
244248
try:
249+
url = _build_url(server, path, self._urls)
250+
_LOGGER.debug("GET request: %s", url)
251+
_LOGGER.debug("query params: %s", query)
252+
_LOGGER.debug("headers: %s", headers)
245253
async with self._session.get(
246-
_build_url(server, path, self._urls),
254+
url,
247255
params=query,
248256
headers=headers,
249257
timeout=self._timeout
250258
) as response:
251259
body = await response.text()
260+
_LOGGER.debug("Response:")
261+
_LOGGER.debug(response)
262+
_LOGGER.debug(body)
252263
await self._record_telemetry(response.status, get_current_epoch_time_ms() - start)
253264
return HttpResponse(response.status, body, response.headers)
254265
except aiohttp.ClientError as exc: # pylint: disable=broad-except
@@ -277,6 +288,12 @@ async def post(self, server, path, apikey, body, query=None, extra_headers=None)
277288
headers.update(extra_headers)
278289
start = get_current_epoch_time_ms()
279290
try:
291+
headers['Accept-Encoding'] = 'gzip'
292+
_LOGGER.debug("POST request: %s", _build_url(server, path, self._urls))
293+
_LOGGER.debug("query params: %s", query)
294+
_LOGGER.debug("headers: %s", headers)
295+
_LOGGER.debug("payload: ")
296+
_LOGGER.debug(str(json.dumps(body)).encode('utf-8'))
280297
async with self._session.post(
281298
_build_url(server, path, self._urls),
282299
params=query,
@@ -285,6 +302,9 @@ async def post(self, server, path, apikey, body, query=None, extra_headers=None)
285302
timeout=self._timeout
286303
) as response:
287304
body = await response.text()
305+
_LOGGER.debug("Response:")
306+
_LOGGER.debug(response)
307+
_LOGGER.debug(body)
288308
await self._record_telemetry(response.status, get_current_epoch_time_ms() - start)
289309
return HttpResponse(response.status, body, response.headers)
290310
except aiohttp.ClientError as exc: # pylint: disable=broad-except
@@ -305,3 +325,7 @@ async def _record_telemetry(self, status_code, elapsed):
305325
await self._telemetry_runtime_producer.record_successful_sync(self._metric_name, get_current_epoch_time_ms())
306326
return
307327
await self._telemetry_runtime_producer.record_sync_error(self._metric_name, status_code)
328+
329+
async def close_session(self):
330+
if not self._session.closed:
331+
await self._session.close()

splitio/api/telemetry.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ def record_init(self, configs):
5959
try:
6060
response = self._client.post(
6161
'telemetry',
62-
'/v1/metrics/config',
62+
'v1/metrics/config',
6363
self._sdk_key,
6464
body=configs,
6565
extra_headers=self._metadata,
@@ -83,7 +83,7 @@ def record_stats(self, stats):
8383
try:
8484
response = self._client.post(
8585
'telemetry',
86-
'/v1/metrics/usage',
86+
'v1/metrics/usage',
8787
self._sdk_key,
8888
body=stats,
8989
extra_headers=self._metadata,
@@ -150,7 +150,7 @@ async def record_init(self, configs):
150150
try:
151151
response = await self._client.post(
152152
'telemetry',
153-
'/v1/metrics/config',
153+
'v1/metrics/config',
154154
self._sdk_key,
155155
body=configs,
156156
extra_headers=self._metadata,
@@ -174,7 +174,7 @@ async def record_stats(self, stats):
174174
try:
175175
response = await self._client.post(
176176
'telemetry',
177-
'/v1/metrics/usage',
177+
'v1/metrics/usage',
178178
self._sdk_key,
179179
body=stats,
180180
extra_headers=self._metadata,

0 commit comments

Comments
 (0)