如何在不同的Flask端点调用之间保持状态?

时间:2018-05-21 07:20:18

标签: python-3.x flask twilio

我正在编写一个简单的Web应用程序来使用Flask和Twilio API启动会议呼叫。 Twilio API的工作方式是,使用Twilio号码拨号;当应答呼叫时,Twilio将调用您之前指定的回叫URL。当呼叫回叫时,当前活动的呼叫将被添加到活动的会议室。因此,我对Flask的问题是如何在端点功能之间传递活动的会议会话。

例如;

class ConferenceSession(object):

   def __init__(self, config):
       self._conf_session = SomeTwilioAPI()

   def dial_attendee(self, number):
      # dial the attendee  
      SomeTwilioAPI.call(number)

   def add_attendee(self):
      if self._conf_session:
          self._conf_session.SomeTwilioAPI()

# flask app
app = Flask(__name__)
app.route('/conference')
def conference():
    for participants in request['participants']:
    return conf_session.dial_attendee(participants')

@app.route('/answered')
def answered()
    conf_session.add_attendee()

if __name__ == '__main__':
    config = ConfConfig()
    conf_session = ConferenceSession(config)
    app.run()

现在这个有效。但是我的项目打包得不好。而且我使用的是全局变量conf_session。所以我的问题是如何在一个类中包含Flask app,因此可以在不使用全局变量的情况下访问变量conf_session?抱歉,我无法提供MVP,因为上下文有很多不相关的代码。

1 个答案:

答案 0 :(得分:1)

查看会话here上的文档。您可以在一个端点中设置conf_session并在下一个端点中访问它。

这一行:

from flask import session

@app.route('/check_session')
def check():
    if 'conf_session' in session:
        # do something here

@app.route('/set_session')
def set_session():
    # set the conf_session here
    conf_session = call_to_twilio()
    session['conf_session'] = conf_session