django - 重用 django 代码自动重新加载功能来自定义管理命令

标签 django django-command-extensions

我喜欢 django 服务器在代码更改时自动重新加载的方式,因此不需要重新启动服务器。

我们目前使用 django 自定义管理命令,可能需要很长时间才能完成。

Is there any way we can use the auto-reloading feature of the django server for our management command?

例如,如果检测到底层 django 代码库发生更改,该命令会重新加载自身并恢复执行很长(无状态)的循环。

最佳答案

无论您的管理命令在做什么,请将其抽象为单个函数并使用django.utils.autoreload.main调用该函数

from django.utils import autoreload

def do_something(*args, **kwargs):
    # management command logic


class Command(BaseCommand):

    def handle(self, *args, **options):
        self.stdout('This command auto reloads. No need to restart...')
        autoreload.main(do_something, args=None, kwargs=None)

对于 django 2.2 或更高版本使用

        autoreload.run_with_reloader(do_something, args=None, kwargs=None)

关于django - 重用 django 代码自动重新加载功能来自定义管理命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6271719/

相关文章:

python - 将django1.2项目迁移到django1.4

python - 添加到购物车数量 Django

django - 如何强制从 django 管理命令报告错误?

python - django 命令找不到命令模块

python - 如何在 Django 项目的上下文中执行任意脚本?

python - 1.10 中关于 django.shortcuts.render() 方法签名的困惑

python - 在模板 Django 中获取 Site_ID

javascript - 类型错误 : Object of type 'Category' (model) is not JSON serializable