如何使用python flask共享队列Restful Web服务

Pro*_*eso 6 python rest flask

我是python flask REST Web服务的新手.我正在尝试开发一个具有共享队列的休息Web服务,多个线程将不断写入服务器端的该队列,最后当用户调用GET方法时,该服务应返回共享队列中的第一个项目.

我试图通过首先实现一个共享变量开始开发它,以下是我使用的代码,

from flask import Flask
app = Flask(__name__)

count= 0 #Shared Variable

@app.route("/")
def counter():
    count = count+1
    return {'count':count}

if __name__ == "__main__":

    app.run() 
Run Code Online (Sandbox Code Playgroud)

但即使是上面的代码也无效.然后我虽然使用缓存作为共享变量,但它不是实现共享队列的正确方法(我的最终目标).请给我你的建议

Dan*_*ead 6

你想做的事情比这复杂一点,我害怕.

Flask(和其他WSGI python系统)不能在单个线程中工作 - 它们通常需要生成多个线程和实例来处理无阻塞的请求,或者没有多个请求同时访问相同的"第一个任务"时间.因此,全局变量不像其他简单的单线程python脚本那样工作.

您需要某种方式让不同的进程都能访问相同的单个数据队列.

通常,这意味着将数据队列外包给外部数据库.一个流行的选择是Redis.烧瓶和redis有一个很好的介绍:

http://flask.pocoo.org/snippets/73/

我希望这能帮助你朝着正确的方向前进!