Asynchronous 如何在Flask/gunicorn/gevent中启动异步函数?
我目前有一个烧瓶申请Asynchronous 如何在Flask/gunicorn/gevent中启动异步函数?,asynchronous,flask,gunicorn,python-3.7,gevent,Asynchronous,Flask,Gunicorn,Python 3.7,Gevent,我目前有一个烧瓶申请 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
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
应用程序的负载不会很重,并且该长时间运行的功能很少会被触发。我正在寻找一种简单的方法来运行它,我愿意接受有关gunicorn/gevent的更改。我正在使用Python 3.7
如何使长时间运行
异步执行?解决方案可以是在线程中运行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)
我也是。我通常更喜欢像芹菜这样的求职者,但在这种情况下我需要一些轻量级的,IIRC