Tôi muốn thực hiện chức năng async mỗi khi tuyến đường bình được thực hiện. Hiện tại chức năng abar của tôi chưa bao giờ được thực hiện. Bạn có thể cho tôi biết tại sao? Cảm ơn bạn rất nhiều:Python3 Gọi Asyncio từ tuyến Flask
import asyncio
from flask import Flask
async def abar(a):
print(a)
loop = asyncio.get_event_loop()
app = Flask(__name__)
@app.route("/")
def notify():
asyncio.ensure_future(abar("abar"), loop=loop)
return "OK"
if __name__ == "__main__":
app.run(debug=False, use_reloader=False)
loop.run_forever()
Tôi đã cố gắng đặt một cuộc gọi chặn trong một chuỗi riêng biệt. Nhưng nó vẫn không gọi hàm abar.
import asyncio
from threading import Thread
from flask import Flask
async def abar(a):
print(a)
app = Flask(__name__)
def start_worker(loop):
asyncio.set_event_loop(loop)
try:
loop.run_forever()
finally:
loop.close()
worker_loop = asyncio.new_event_loop()
worker = Thread(target=start_worker, args=(worker_loop,))
@app.route("/")
def notify():
asyncio.ensure_future(abar("abar"), loop=worker_loop)
return "OK"
if __name__ == "__main__":
worker.start()
app.run(debug=False, use_reloader=False)
'app.run' và' loop.run_forever' đều bị chặn. Có lẽ bạn nên sử dụng một chuỗi. Nếu bạn _need_ sử dụng asyncio, bạn nên xem xét một trong các khung công tác giống như Flask được xây dựng trên đầu trang của nó. – dirn
@dim Cảm ơn bạn rất nhiều. Tôi đã cố gắng di chuyển một ngăn chặn thành một sợi riêng biệt. S. câu hỏi đã chỉnh sửa của tôi! – user24502