Hi Chris,

I don't know your technical or efficiency constraints, however, if you want to be 100% sure that you won't have any side effects between sync and async code, you might have two daemons, one for each pattern, and use microservice approach to exchanges messages.
Especially if you plan to use WebSockets, it would help you.
Up to you to decide the easiest approach for you.

Regards.

--
Ludovic Gasc (GMLudo)
Lead Developer Architect at ALLOcloud

2017-07-10 5:48 GMT+02:00 Chris Jerdonek <chris.jerdonek@gmail.com>:
I have a two-part question.

If my application is single-threaded and synchronous (e.g. a web app
using Gunicorn with sync workers [1]), and occasionally I need to call
functions in a library that requires an event loop, is there any
downside to creating and closing the loop on-the-fly only when I call
the function? In other words, is creating and destroying loops cheap?

Second, if I were to switch to a multi-threaded model (e.g. Gunicorn
with async workers), is my only option to start the loop at the
beginning of the process, and use loop.call_soon_threadsafe()? Or can
I do what I was asking about above and create and close loops
on-the-fly in different threads? Is either approach much more
efficient than the other?

Thanks,
--Chris

[1] http://docs.gunicorn.org/en/latest/design.html#sync-workers
_______________________________________________
Async-sig mailing list
Async-sig@python.org
https://mail.python.org/mailman/listinfo/async-sig
Code of Conduct: https://www.python.org/psf/codeofconduct/