gpt4 book ai didi

asynchronous - 如何在 Flask/gunicorn/gevent 中启动一个异步函数?

转载 作者:行者123 更新时间:2023-12-03 16:48:04 28 4
gpt4 key购买 nike

我目前有一个 Flask 应用程序

from flask import Flask
import time

app = Flask(__name__)


@app.route('/')
def foobar_view():
long_running() # TODO: Just trigger this; don't wait for completion
return 'Done!'


def long_running():
print('long_running:start')
time.sleep(100)
print('long_running:end')


app.run(host='localhost', port=5000)

开始于

gunicorn --worker-class=gevent \
--worker-connections=1000 \
--bind 0.0.0.0:5000 my_app.app:app \
--workers=4 \
--timeout 120 \
--keep-alive 120

应用不会有很重的负载,这个long_running函数只会很少被触发。我正在寻找一种简单的方法来运行它,并且我愿意接受有关 gunicorn/gevent 的更改。我正在使用 Python 3.7。

如何让 long_running 异步执行?

最佳答案

解决方案可能是在线程中运行 int:

from flask import Flask
import time
from threading import Thread

app = Flask(__name__)


@app.route('/')
def foobar_view():
Thread(target=async_long_running, args=(app, 'works')).start()
return 'Done!'


def async_long_running(app, msg):
with app.app_context():
long_running(msg)

def long_running(foo):
print('long_running:start:{}'.format(foo))
time.sleep(100)
print('long_running:end')


app.run(host='localhost', port=5000)

关于asynchronous - 如何在 Flask/gunicorn/gevent 中启动一个异步函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56269872/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com