【问题标题】:Session variable doesn't change when it's incremented会话变量在递增时不会改变
【发布时间】:2018-02-04 02:59:04
【问题描述】:

我有一个聊天机器人,它会按顺序提问。为了跟踪问题,我使用了一个作为会话变量的计数器。但是当我增加 session[counter'] 时,它不会改变。

这是逻辑。即使这段代码有效,我也不知道为什么当我为我的机器人实现相同的逻辑时,它不起作用。

question_dict = {
        'Locq0':[{'question':"Some question 0",'options':(["Continue","@continue"])}],
        'Locq1':[{'question':"Some question 1",'options':(["Continue","@continue"])}],
        'Locq2':[{'question':"Some question 2",'options':(["Continue","@continue"])}],
}

def main():
  session['counter'] = 0
  if user_payload == "@continue":
      increment()

def increment(): 
    if session['counter'] <= len(question_dict):
       session['counter'] += 1
       quiz(session['counter'])

def quiz(counter):
    question = question_dict['Locq{}'.format(counter)][0]['question']
    option   = question_dict['Locq{}'.format(counter)][0]['options']
    # display the question and option
    print(question)
    print(option)

回到机器人。当用户第一次使用机器人时,会创建一个会话变量session['counter'],并将其初始化为 0。然后机器人开始提问,要移动到下一个问题,它应该递增 session['counter'] +=1。但这不会发生,session['counter'] 始终为 0,即使调用了 increment() 函数。

我做错了吗?或者有没有合适的方法来做到这一点?这个应用程序是使用 Flask 提供的。

【问题讨论】:

    标签: python session flask facebook-messenger-bot


    【解决方案1】:

    我认为这是因为当调用 main 方法时,它会抛出错误。尝试先初始化字典,然后再增加它。
    下面的代码会报错

    def main():
      session['counter'] = 0
      if user_payload == "@continue":
          increment()
    

    试试下面的代码

     def main():
          session = {'counter':0}
          if user_payload == "@continue":
              increment()
    

    【讨论】:

    • 谢谢!但是,这不是问题。当我在具有表单的 Web 应用程序中使用相同的逻辑时,它工作正常。 @Kalyan Reddy
    • 那么,您可能正在代码中的某处再次将会话的计数器更新为 0。尝试将会话字典更改为全局字典并告诉我
    • session 是一个烧瓶字典,而 counter 是一个会话变量。我开始使用会话是因为多进程服务器无法跟踪全局变量。你可以在这里关注这个问题stackoverflow.com/questions/45795977/…@Kalyan Reddy
    • 你能不能尝试为每个函数打印会话变量,当我尝试时,我收到一个错误,会话变量未定义可能是因为会话变量的范围
    • 正如您所说的“您正在代码中的某处再次将会话的计数器更新为 0”,这恰好是真的。那部分代码不应该执行,但它确实执行了。我会尝试修复它。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2012-12-17
    • 2016-02-09
    • 2012-01-31
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多