Django在应用程序启动时运行代码,但在迁移时运行代码

时间:2016-06-20 06:43:24

标签: python django

您好我想启动第一次运行我的应用程序时运行的后台线程。我已经使用应用程序配置的ready()函数实现了它。

class MyappConfig(AppConfig):
    name = 'myApp'

    def ready(self):
        try:
            thread = threading.Thread(target=xxxx)
        except:
            pass          

问题是当Django也运行它的迁移时会调用此方法,但不应该这样做。我怎样才能防止这种情况发生。

我尝试过使用Django后台任务,但它根本不会运行任务

2 个答案:

答案 0 :(得分:3)

如果使用“python manage.py [migrate]”调用脚本,则可以避免执行代码:

file_get_contents

答案 1 :(得分:0)

我发现最好的方法是检查runserver是否在sys.argv

from django.apps import AppConfig
import sys

class config(AppConfig):
    name = 'appName'
    if 'runserver' in sys.argv:
        do_main_thread()

这比manage.py更好,因为该参数包含在我以前习惯的migratemakemigrationsrunserver的每个命令中。