14

I just want to run a simple test example yet I get the below error. How do I resolve?

import asyncio import uvloop import concurrent.futures import time asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) async def do_some_work(x): while True: print("Waiting " + str(x)) await asyncio.sleep(x) if __name__ == '__main__': loop = asyncio.new_event_loop() tasks = [asyncio.ensure_future(do_some_work(2)), asyncio.ensure_future(do_some_work(5))] loop.run_until_complete(asyncio.gather(*tasks)) Traceback (most recent call last): File "/Users/worker_why.py", line 23, in <module> loop.run_until_complete(asyncio.gather(*tasks)) File "uvloop/loop.pyx", line 1181, in uvloop.loop.Loop.run_until_complete (uvloop/loop.c:25184) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/asyncio/tasks.py", line 508, in ensure_future raise ValueError('loop argument must agree with Future') ValueError: loop argument must agree with Future 
1
  • 2
    Have you tried passing newly created loop to ensure_future? asyncio.ensure_future(..., loop=loop) Commented Oct 18, 2017 at 8:50

1 Answer 1

15
loop = asyncio.new_event_loop() 

If you create new event loop and don't want to pass it everywhere, you should also make this loop current for context:

loop = asyncio.new_event_loop() asyncio.set_event_loop(loop) 
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.