使用多进程在Flask HTTP请求的不同进程中运行循环:
import time
from flask import Flask, jsonify
from multiprocessing import Process, Value
app = Flask(__name__)
tasks = [
{
'id': 1,
'title': u'Buy groceries',
'description': u'Milk, Cheese, Pizza, Fruit, Tylenol',
'done': False
},
{
'id': 2,
'title': u'Learn Python',
'description': u'Need to find a good Python tutorial on the web',
'done': False
}
]
@app.route('/todo/api/v1.0/tasks', methods=['GET'])
def get_tasks():
return jsonify({'tasks': tasks})
def record_loop(loop_on):
while True:
if loop_on.value == True:
print("loop running")
time.sleep(1)
if __name__ == "__main__":
recording_on = Value('b', True)
p = Process(target=record_loop, args=(recording_on,))
p.start()
app.run(debug=True, use_reloader=False)
p.join()
任务部分来自这里,来自我的多处理代码。 注意“ use_reloader = False”部分。这是避免两次运行循环所必需的。由于这个原因,请看这里
可以通过使用以下命令启动服务器来测试功能
python <your_name_for_the example>.py
并打电话
curl -i http://localhost:5000/todo/api/v1.0/tasks