我尝试创建一个Flask rest API,并在工作后进行一些asyncio
循环。我正在测试它,每次看到loop.create_task()
并且task
像烧瓶服务器一样开始运行它时,都可以看到它。
他是我的代码:
async def hello_world(sc):
await asyncio.sleep(sc)
print("Hello World!",sc)
loop = asyncio.get_event_loop()
loop.create_task(hello_world(2))
loop.create_task(hello_world(4))
loop.create_task(hello_world(5))
loop.create_task(hello_world(1))
loop.create_task(hello_world(9))
print("fffffffffffffffffffff")
api.start_server()
我得到以下结果:
python main.py
fffffffffffffffffffff
* Serving Flask app "api" (lazy loading)
[...]
我期望这样的事情:
python main.py
fffffffffffffffffffff
* Serving Flask app "api" (lazy loading)
[...]
Hello World! 1
Hello World! 2
Hello World! 4
Hello World! 5
Hello World! 9
我得到的更精确的例子:
import asyncio
async def hello_world(sc):
await asyncio.sleep(sc)
print("Hello World!",sc)
async def timer():
times = 0
while True:
await asyncio.sleep(1)
print(times)
times +=1
loop = asyncio.get_event_loop()
loop.create_task(timer())
loop.run_until_complete(asyncio.gather(
hello_world(3),
hello_world(2),
hello_world(4),
hello_world(5),
))
print("fffffffffffffffffffff")
api.start_server()
我得到了:
λ python main.py
0
Hello World! 2
1
Hello World! 3
2
Hello World! 4
3
Hello World! 5
4
fffffffffffffffffffff
* Serving Flask app "api" (lazy loading)
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: on
0
Hello World! 2
1
Hello World! 3
2
Hello World! 4
3
Hello World! 5
4
fffffffffffffffffffff
为什么要停止打印timer()
功能?