Python 烧瓶设置代码只运行一次,但不在测试期间运行

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

我的Flask应用程序中有设置代码,用于初始化Mongo中的一些数据库条目并安排cron作业。如何在服务器启动时运行一次,而不是在运行测试时运行一次

我的项目结构如下:

/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
My
test.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尝试初始化/设置服务器。