Я пытаюсь создать API для отдыха Flask с некоторыми циклами 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()
?
🤔 А знаете ли вы, что...
С Python можно создавать ботов для социальных сетей и мессенджеров.