> On Dec 9, 2016, at 5:57 AM, Luca Sbardella <luca.sbarde...@gmail.com> wrote:
> 
> Hi,
> 
> I'm trying to run pulsar in multiprocessing mode (using the multiprocessing 
> module to create processes rather than asyncio subprocess).
> However, in python 3.6 I have a small problem.
> When the new process starts, it creates the event loop and starts it but I get
> 
> raise RuntimeError('This event loop is already running')
> 
> The loop is not running, but the _running_loop global in the asyncio.events 
> module has been inherited from the master process and therefore the 
> get_event_loop function is somehow broken.
> 
> I resolved the issue via setting the running loop to None when the Process 
> run method is called:
> 
> def run(self):
>     try:
>         from asyncio.events import _set_running_loop
>         _set_running_loop(None)
>     except ImportError:
>         pass
>     ...
> 
> Is that what I'm supposed to do? Or is there a better way?

A better was is to never fork or spawn multiprocessing.Process from a running 
coroutine.  Ideally, you want to stop the loop, spawn a process, resume the 
loop.

Yury

Reply via email to