Python 烧瓶设置代码只运行一次,但不在测试期间运行
我的Flask应用程序中有设置代码,用于初始化Mongo中的一些数据库条目并安排cron作业。如何在服务器启动时运行一次,而不是在运行测试时运行一次 我的项目结构如下:Python 烧瓶设置代码只运行一次,但不在测试期间运行,python,flask,Python,Flask,我的Flask应用程序中有设置代码,用于初始化Mongo中的一些数据库条目并安排cron作业。如何在服务器启动时运行一次,而不是在运行测试时运行一次 我的项目结构如下: /crypto __init__.py main.py /templates /statis /tests tests.py 应用程序对象和设置代码位于main.py中,看起来像 app = Flask(__name__) ... with app.app_conte
/crypto
__init__.py
main.py
/templates
/statis
/tests
tests.py
应用程序对象和设置代码位于main.py
中,看起来像
app = Flask(__name__)
...
with app.app_context():
# do database setup
# do cron job setup
Mytest.py
需要从crypto import main运行,以访问应用程序对象,但导入它的行为也会运行设置代码,我不希望这样。我在结构上缺少什么东西可以解决这个问题吗
@大家好,我是Frogato,我尝试在设置代码周围添加如果“\uuuuu name\uuuuuu=”\uuuuu main\uuuuuu”:
,但是当我使用flask run
本地启动服务器时,该代码不会运行。当Python解释器读取.py
文件时(例如,当您导入它时),它将立即执行其所有代码。因此,为了在.py
文件是程序的主要模块时执行一段代码,您需要将设置代码放入以下的主体中(如果):
if __name__ == "__main__":
# setup here.
当.py
文件是要运行的主模块时,此if
可确保安装代码运行。感谢您的回复!我试过了,但是flask run
没有执行该部分中的代码。@Mike您可以使用很多调整来克服这个问题:(1)在代码中运行服务器,而不是使用flask run
CLI。(2) 避免导入main.py
,方法是将公共部分分离,然后从main.py
和要从中导入的第二个模块导入该公共部分。(3) 使用CLI尝试初始化/设置服务器。