def es(loop): es = Elasticsearch(loop=loop) delete_template = es.transport.perform_request( 'DELETE', '/_template/*', ) delete_all = es.transport.perform_request( 'DELETE', '/_all', ) coros = [delete_template, delete_all] coro = asyncio.gather(*coros, loop=loop) loop.run_until_complete(coro) try: yield es finally: loop.run_until_complete(es.close())
class DefaultConnnectionFactoryUtility: """ Default uses single connection for entire application """ def __init__(self): self._conn = None def get(self, loop=None): if self._conn is None: self._conn = Elasticsearch( loop=loop, **app_settings.get("elasticsearch", {}).get("connection_settings"), ) return self._conn async def close(self, loop=None): if self._conn is not None: if loop is not None: asyncio.run_coroutine_threadsafe(self._conn.close(), loop) else: await self._conn.close() self._conn = None