【问题标题】:__init__ method runs multiple times [duplicate]__init__ 方法运行多次[重复]
【发布时间】:2020-12-22 03:07:35
【问题描述】:

这是我的(简化的)烧瓶代码

from flask import Flask, request, redirect
from api_v1.api import api as api_blueprint

app = Flask(__name__)
app.register_blueprint(api_blueprint, url_prefix='/api/v1')

if __name__ == '__main__':
    app.run(port=5001, debug=True, host="0.0.0.0")

这里是 api.py

from flask import Blueprint, request
from api_v1.db.connect_db import Dbs


db = Dbs() api = Blueprint('api/v1/', __name__)

这里是 connect_db.py

import mysql.connector


class Dbs:
    def __init__(self):
        print("connecting")
        self.source_db = mysql.connector.connect(
            # credentials goes here
        )
        self.main_db = mysql.connector.connect(
           # credentials goes here
        )
        self.source_cursor = self.source_db.cursor()
        self.main_cursor = self.main_db.cursor()
        print("connected")

输出:

连接

已连接

  • 服务 Flask 应用“app”(延迟加载)
  • 环境:生产
    警告:这是一个开发服务器。不要在生产部署中使用它。
    使用生产 WSGI 服务器 而是。
  • 调试模式:开启
  • 使用 stat 重启

连接

已连接

  • 调试器已激活!
  • 调试器 PIN:000-00-000 * 在http://0.0.0.0:8080/ 上运行(按 CTRL+C 退出)

问题是, 这两次连接到数据库

它在我的 mysql 服务器中显示来自应用程序的重复连接

  1. 为什么会这样?
  2. 有人知道解决方案吗?

【问题讨论】:

  • Restarting with stat - 您的代码的哪一部分负责打印此消息?
  • 如果 name == 'main': app.run(port=5001, debug=True, host="0.0.0.0")

标签: python flask import


【解决方案1】:

您显然连接了两次:

self.source_db = mysql.connector.connect(
            # credentials goes here
        )
self.main_db = mysql.connector.connect(
       # credentials goes here
    )

连接一次,然后运行 ​​USE db_name 来更改数据库 MySQL Use statement

【讨论】:

  • 我认为问题更多是关于这样一个事实,即基于输出,__init__ 似乎运行了两次,因为connectingconnected 都打印了两次。
  • 不,它们是两个不同服务器中的两个数据库。
  • 将 app.debug 设置为 False
猜你喜欢
  • 2014-08-15
  • 1970-01-01
  • 2018-01-28
  • 2020-08-14
  • 2022-11-24
  • 1970-01-01
  • 2018-11-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多