Flask 異步執行耗時任務


使用線程的方式實現異步執行任務

# -*- coding: utf-8 -*-
from flask import Flask, jsonify
from time import sleep
from concurrent.futures import ThreadPoolExecutor

# 創建線程池執行器
executor = ThreadPoolExecutor(2)
app = Flask(__name__)

# 耗時任務是否完成(推薦redis存儲 唯一標識)
gl = True


@app.route('/')
def run_jobs():
    # 判斷是否需要執行耗時任務
    global gl
    if gl:
        print "submit"
        executor.submit(long_task, 'hello', 123)
    else:
        gl = True
        return 'long task complete.'
    return 'long task running.'


# 耗時任務
def long_task(arg1, arg2):
    print "args: %s %s!" % (arg1, arg2)
    sleep(20)
    print "Task is done!"
    global gl
    gl = False


if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=5000)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM