플라스크 경로가 실행될 때마다 비동기 함수를 실행하려고합니다. 현재 내 abar 함수는 실행되지 않습니다. 왠지 말해줘? 대단히 감사합니다Flask 경로에서 Python3 Asyncio 호출
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()
가 나는 또한 별도의 스레드에서 하나의 차단 호출을 넣어 그것을 시도. 그러나 그것은 아직도 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'과'loop.run_forever'는 둘 다 차단됩니다. 아마도 스레드를 사용하는 것이 좋습니다. asyncio를 사용할 필요가 있다면, 그 위에 내장 된 Flask와 같은 프레임 워크 중 하나를 조사해야합니다. – dirn
@dim 고맙습니다. 하나의 차단을 별도의 스레드로 옮기려고했습니다. S. 내 수정 된 질문! – user24502