gpt4 book ai didi

python - 在 Flask 中创建 Python 类的多个实例

转载 作者:行者123 更新时间:2023-11-28 17:06:45 31 4
gpt4 key购买 nike

我制作了一个 flask 应用程序,它从用户那里获取和接收消息,并从我创建的 Chatbot 后端生成回复。当我运行我的 app.py 文件并转到我的本地主机时,如果我只打开一个实例,它运行良好,但是如果我尝试打开多个实例,那么它们都会尝试使用同一个机器人。如何为每个 session 创建一个独特的机器人。我尝试使用 g.bot = mybot() 但问题是每次用户回复机器人时它仍然会创建一个新的机器人。我对此比较陌生,所以链接到详细解释将不胜感激。请注意,某些代码片段是与以前版本无关的垃圾。

app = Flask(__name__)
items = ["CommonName","Title",
"Department","Address","City","PhoneNum"]
app.config.from_object(__name__)
bot2 = Bot2()

@app.before_request
def before_request():
session['uid'] = uuid.uuid4()
print(session['uid'])
g.bot2 = Bot2()


@app.route("/", methods=['GET'])
def home():
return render_template("index.html")

@app.route("/tables")
def show_tables():
data = bot2.df
if data.size == 0:
return render_template('sad.html')
return render_template('view.html',tables=[data.to_html(classes='df')], titles = items)

@app.route("/get")
def get_bot_response():
userText = request.args.get('msg')
bot2.input(str(userText))
print(bot2.message)
g.bot2.input(str(userText))
print(g.bot2.message)
show_tables()
if (bot2.export):
return (str(bot2.message) + "<br/>\nWould you like to narrow your results?")
#return (str(bot.message) + "<a href='/tables' target=\"_blank\" style=\"color: #FFFF00\">click here</a>" + "</span></p><p class=\"botText\"><span> Would you like to narrow your results?")
else:
return (str(bot2.message))

if __name__ == "__main__":
app.secret_key = 'super secret key'
app.run(threaded=True)

最佳答案

Problem: A new bot is created each time the user replies to the bot

原因:app.before_request 在您的 Flask 服务器收到的每个请求 之前运行。因此每个回复都会创建一个新的 Bot2 实例。您可以阅读更多相关信息 here .

Problem: Creating a bot per instance

可能的解决方案:我不太确定打开多个实例是什么意思(您是在尝试运行同一服务器的多个实例,还是有多个人访问单个服务器)。我会说阅读 Flask 中的 session 并将 Bot2 实例作为服务器端变量存储在 session 中。您可以阅读更多相关信息 herehere .

关于python - 在 Flask 中创建 Python 类的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50458750/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com