Algolia Asynchronous Python Client
This package is designed to replace the
algoliasearch
package in asynchronous environments.
This package is only compatible with python 3.4 and onward.
What it does
-
Is compatible with python asyncio
.
-
Provide asynchronous alternatives to most of the client methods.
All those methods are just suffixed by _async
(search_async
,
add_object_async
, etc.)
-
Still provide synchronous versions of the methods.
-
Uses aiohttp
as the HTTP underlying library.
-
Uses __aexit__
to avoid manually closing aiohttp
sessions with
python >= 3.5.1.
What it does not
Installation and Dependencies
Most of the logic of the synchronous client is being used here, so this
client depends on the synchronous one. It also depends on aiohttp
.
To install this package: pip install algoliasearchasync
.
Documentation
All the asynchronous functions have the same names as the synchronous ones
with _async
appended. Synchronous methods keep the same name.
Arguments taken by the asynchronous functions are the same as the synchronous
one, for documentation on the behavior of each function please see:
Examples
With python >= 3.4
import asyncio
from algoliasearchasync import ClientAsync
@asyncio.coroutine
def main(terms):
client = ClientAsync('<APP_ID>', '<API_KEY>')
index = client.init_index('<INDEX_NAME>')
searches = [index.search_async(term) for term in terms]
s = yield from asyncio.gather(*searches)
yield from client.close()
return s
terms = ['<TERM2>', '<TERM2>']
loop = asyncio.get_event_loop()
complete = loop.run_until_complete(asyncio.gather(*searches))
for term, search in zip(terms, complete):
print('Results for: {}'.format(term))
print('\n'.join([h['<FIELD>'] for h in search['hits']]))
With python >= 3.5.1
import asyncio
from algoliasearchasync import ClientAsync
async def main(terms):
async with ClientAsync('<APP_ID>', '<API_KEY>') as client:
index = client.init_index('<INDEX_NAME>')
searches = [index.search_async(term) for term in terms]
return await asyncio.gather(*searches)
terms = ['<TERM1>', '<TERM2>']
loop = asyncio.get_event_loop()
complete = loop.run_until_complete(main(terms))
for term, search in zip(terms, complete):
print('Results for {}'.format(term))
print('\n'.join([h['<FIELD>'] for h in search['hits']]))