Как сохранить состояние между различными вызовами оконечной точки Flask? - PullRequest
0 голосов
/ 21 мая 2018

Я пишу простое веб-приложение для инициирования конференц-связи с использованием Flask и Twilio API.API Twilio работает так: вы набираете номер с помощью номера 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 в класс, чтобы к переменной conf_session можно было обращаться без использования глобальной переменной?Извините, я не могу предоставить MVP, потому что много несвязанного кода для контекста.

1 Ответ

0 голосов
/ 21 мая 2018

Посмотрите документ на сессии здесь .Вы можете установить 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
...