擅长:python、mysql、java
<p>让<code>compile_metadata</code>生成一个线程来处理长时间运行的任务,然后立即返回结果代码(即,不等待线程完成)。请确保对可以生成的同时线程的数量有一些限制。</p>
<p>对于稍微更健壮和可伸缩的解决方案,请考虑一些基于排序消息队列的解决方案,如<a href="http://www.celeryproject.org/" rel="nofollow noreferrer">celery</a>。</p>
<p>据记录,一个简单的解决方案可能是:</p>
<pre><code>import time
import threading
from flask import Flask, abort, jsonify
debug = True
app = Flask(__name__)
def long_running_task():
print 'start'
time.sleep(40)
print 'finished'
@app.route("/", methods=['POST'])
def compile_metadata():
# the long running process...
t = threading.Thread(target=long_running_task)
t.start()
# end the long running process
return jsonify({"success": True})
if __name__ == "__main__":
app.run(host='0.0.0.0', port=8082, debug=debug, threaded=True)
</code></pre>