Как запустить функцию в фоновом режиме без блокировки основного потока и обслуживания приложения flask - PullRequest
0 голосов
/ 17 июня 2020

Я прочитал несколько ответов SO относительно asyncio, чтобы понять, как это сделать sh. Однако ответы, которые я нашел, не помогли решить мою проблему.

У меня есть приложение 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 выполнялась как сопрограмма?

1 Ответ

0 голосов
/ 17 июня 2020

Попробуйте вместо этого модуль 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/

Надеюсь, это вам поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...