Flask设置代码运行一次,但不会在测试期间运行

时间:2017-12-30 06:04:07

标签: python flask

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

我的项目结构如下:

/crypto
    __init__.py
    main.py
    /templates
    /statis
    /tests
        tests.py

其中app对象和设置代码位于main.py,看起来像

app = Flask(__name__)

...

with app.app_context():

    # do database setup

    # do cron job setup

我的test.py需要运行from crypto import main来访问应用对象,但导入它的行为也会运行我不想要的设置代码。我在结构上缺少什么可以解决这个问题?

@Hi我是Frogatto,我尝试在设置代码周围添加if __name__ == "__main__":,但是当我使用flask run在本地启动服务器时,该代码无法运行。

1 个答案:

答案 0 :(得分:1)

当Python解释器读取Message: Call to a member function result() on array 文件时(例如当你.py时),它将立即执行所有代码。因此,为了在import文件是程序的主要模块时执行一段代码,您需要将设置代码放在以下.py的正文中:

if

if __name__ == "__main__": # setup here. 文件是要运行的主要模块时,此if可确保您的设置代码运行。