我有一些服务器启动代码位于我的一个 Django 应用程序的“models.py”中。我需要在服务器启动时运行该代码。
问题是,该代码发出一个 SQL 查询,这阻止了我运行syncdb
(psycopg2
它破坏了事务,并且没有创建表。)
将代码放在中间件中并提升django.core.exceptions.MiddlewareNotUsed
并不是最佳选择,因为我也希望在 Django shell 中产生效果(并且将初始化代码放在中间件中听起来也不对。)我还需要等待第一个要求这样做。我想在服务器启动时运行代码,而不是在第一个客户来敲我的网站时。
服务器启动信号仍然没有在 Django 中实现,所以这不是一个选项。
因此,我想以某种方式:
- 检查 Django 是否正在运行同步数据库,所以我不做查询,
- 或者,或者,检查相应的表是否存在,如果它们不存在,那么也不要进行任何查询
我在任何文档中都没有找到上述两个选项。我怎么做?还是有更好(即理智)的方式来做我想做的事情?