这是我的问题,我试图通过django model on shutdown signal更新数据库,它在init.py文件中声明,但model object上的database是None
import logging
import os
import signal
import sys
from django.db import transaction
logger = logging.getLogger("logger")
def my_signal_handler(*args):
if os.environ.get("RUN_MAIN") is not "true":
return
from mymodels import MyModel
logger.info("update models")
with transaction.atomic():
for model in MyModel.objects.all():
if model.my_flag:
model.my_flag = False
model.save()
sys.exit(0)
signal.signal(signal.SIGINT, my_signal_handler)
另外,当我试图在my_signal_handler
函数外部导入模型时,应用程序抛出异常“django.core.exceptions异常.AppRegistryNotReady:应用程序尚未加载。“
问题是:附加可以访问应用程序上下文的shutdown钩子的更好方法是什么
如果您想在独立模式下使用django模型,您应该手动调用
django.setup()
,然后您可以导入并使用您的模型,因此将代码更改为如下所示:所以在短期内,首先运行
django.setup()
,然后导入并使用模型在这个问题上查一下djangodocs
相关问题 更多 >
编程相关推荐