詹戈。通过shutdown模型访问数据库

2024-04-24 04:11:26 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的问题,我试图通过django model on shutdown signal更新数据库,它在init.py文件中声明,但model object上的databaseNone

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钩子的更好方法是什么


Tags: djangofromimport应用程序signalmodelifos
1条回答
网友
1楼 · 发布于 2024-04-24 04:11:26

如果您想在独立模式下使用django模型,您应该手动调用django.setup(),然后您可以导入并使用您的模型,因此将代码更改为如下所示:

import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")
django.setup()

from mymodels import MyModel

所以在短期内,首先运行django.setup(),然后导入并使用模型

在这个问题上查一下djangodocs

相关问题 更多 >