Python 3.8 导入函数中的模块复制和应用程序对象范围
Python 3.8 module duplication and app object scope within imported functions
我对自定义模块的导入感到困惑。正如您在下面的代码中看到的那样,在 main 中,我首先导入了一切所需的所有库,并将这些导入复制到我的 i_setup_functions.py 文件中。将它们中的任何一个留在任何一个文件中都会产生错误。与重复“app = Flask(name)”相同。我真的希望冗余是不正确的,并且有一些简单的方法可以解决这个问题。我想要做的就是包括会话、电子邮件、数据连接等的设置。为了简单起见,这里只显示会话。
顺便说一句:在我尝试模块化之前,整个应用程序都没有错误。
错误信息:
RuntimeError: The session is unavailable because no secret key was set. Set the secret_key on the application to something unique and secret.
该错误消息指向试图创建会话的 main.py 中间函数中的一行。
感谢大家分享任何想法!
main.py:
from flask import session
import random
from datetime import datetime, timedelta
from i_setup_functions import setup_sessions
app = Flask(__name__)
# is the following line even necessary in either module?
application = app
setup_sessions()
setup_mail()
setup_logging()
[snip]
# Error here:
session["id_user"] = id_user
i_setup_functions.py
from flask import session
import random
from datetime import datetime, timedelta
from i_setup_functions import setup_sessions
app = Flask(__name__)
application = app
def setup_sessions():
random.seed(datetime.now())
app.config['SECRET_KEY'] = str(random.randint(1, 500)) + "jibber" + str(random.randint(1, 500)) + "jabber"
app.permanent_session_lifetime = timedelta(days=30)
return True
您正在创建两个(或更多?)单独的应用程序并将 SECRET_KEY
设置为不为您的应用程序提供服务的应用程序。
要解决此问题,请从除 main.py
之外的所有模块中删除所有 app = Flask(__name__)
调用。然后,将你在main.py
中创建的app
传递到所有你需要它的地方。
from flask import session
import random
from datetime import datetime, timedelta
from i_setup_functions import setup_sessions
app = Flask(__name__)
setup_sessions(app)
setup_mail(app)
setup_logging(app)
[snip]
session["id_user"] = id_user
我对自定义模块的导入感到困惑。正如您在下面的代码中看到的那样,在 main 中,我首先导入了一切所需的所有库,并将这些导入复制到我的 i_setup_functions.py 文件中。将它们中的任何一个留在任何一个文件中都会产生错误。与重复“app = Flask(name)”相同。我真的希望冗余是不正确的,并且有一些简单的方法可以解决这个问题。我想要做的就是包括会话、电子邮件、数据连接等的设置。为了简单起见,这里只显示会话。
顺便说一句:在我尝试模块化之前,整个应用程序都没有错误。
错误信息:
RuntimeError: The session is unavailable because no secret key was set. Set the secret_key on the application to something unique and secret.
该错误消息指向试图创建会话的 main.py 中间函数中的一行。
感谢大家分享任何想法!
main.py:
from flask import session
import random
from datetime import datetime, timedelta
from i_setup_functions import setup_sessions
app = Flask(__name__)
# is the following line even necessary in either module?
application = app
setup_sessions()
setup_mail()
setup_logging()
[snip]
# Error here:
session["id_user"] = id_user
i_setup_functions.py
from flask import session
import random
from datetime import datetime, timedelta
from i_setup_functions import setup_sessions
app = Flask(__name__)
application = app
def setup_sessions():
random.seed(datetime.now())
app.config['SECRET_KEY'] = str(random.randint(1, 500)) + "jibber" + str(random.randint(1, 500)) + "jabber"
app.permanent_session_lifetime = timedelta(days=30)
return True
您正在创建两个(或更多?)单独的应用程序并将 SECRET_KEY
设置为不为您的应用程序提供服务的应用程序。
要解决此问题,请从除 main.py
之外的所有模块中删除所有 app = Flask(__name__)
调用。然后,将你在main.py
中创建的app
传递到所有你需要它的地方。
from flask import session
import random
from datetime import datetime, timedelta
from i_setup_functions import setup_sessions
app = Flask(__name__)
setup_sessions(app)
setup_mail(app)
setup_logging(app)
[snip]
session["id_user"] = id_user