我已经阅读了有关异步的多个SO答案,以了解如何实现此目的。但是,我发现的答案不适用于我遇到的问题。
我有一个运行后台功能时要提供的Flask应用程序。我有以下代码:
import asyncio
import time
from flask import Flask
def background_task():
while True:
print('hej')
time.sleep(1)
app = Flask(__name__)
@app.route('/test')
def hello_world():
return 'Hello, world'
asyncio.run(background_task())
app.run()
print('running')
我希望background_task在提供应用程序时继续运行。但是当前asyncio.run阻止了主线程。如何使background_task作为协程运行?
答案 0 :(得分:0)
尝试使用threading
模块,我发现它很有用,下面是一个示例:
import threading
import asyncio
import time
from flask import Flask
def background_task():
while True:
print('hej')
time.sleep(1)
app = Flask(__name__)
@app.route('/test')
def hello_world():
return 'Hello, world'
#We start a thread instead of using asyncio...
t=threading.Thread(target=background_task)
t.start()
app.run()
print('running')
这是一个教程:https://realpython.com/intro-to-python-threading/
希望对您有帮助。