It's possible to make a decorator that just creates an event loop every time you want to run an async function, but that adds a lot of overhead and confusion.
Another common practice is to create a client that can accept a transport, that way you can just choose to make the transport sync or async, for example, this project https://github.com/aio-libs/aioelasticsearch, which takes the sync elasticsearch pkg, but adds an async transport that you can use with it.
Or elasticsearch's official solution to using async with their pkg
https://elasticsearch-py.readthedocs.io/en/master/async.html
Anyways, if you ask me I think its better to stick to one thing, if your project benefits from async, just keep the client async.