我在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
在本地启动服务器时,该代码无法运行。
答案 0 :(得分:1)
当Python解释器读取Message: Call to a member function result() on array
文件时(例如当你.py
时),它将立即执行所有代码。因此,为了在import
文件是程序的主要模块时执行一段代码,您需要将设置代码放在以下.py
的正文中:
if
当if __name__ == "__main__":
# setup here.
文件是要运行的主要模块时,此if
可确保您的设置代码运行。