CommandError: Неизвестная команда:

Я создал пользовательскую команду и хочу запускать ее автоматически при старте

Мой командный файл

# project/parser_app/management/commands/create_schedules.py

class Command(loaddata.Command):
    def handle(self, *args, **options):
        # some code

Добавлена команда в wsgi.py

import os
from django.core.wsgi import get_wsgi_application
from django.core.management import call_command

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'core_app.settings')

application = get_wsgi_application()
call_command("makemigrations") 
call_command("migrate")
call_command("collectstatic", interactive=False)
call_command("create_schedules parser_app/management/commands/schedule_fixtures.json")

Я могу выполнить в консоли команду python manage.py "create_schedules parser_app/management/commands/schedule_fixtures.json" и все работает, но когда я добавил команду в wsgi.py (для запуска при старте)

import os
from django.core.wsgi import get_wsgi_application
from django.core.management import call_command

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'core_app.settings')

application = get_wsgi_application()
call_command("makemigrations") 
call_command("migrate")
call_command("collectstatic", interactive=False)
call_command("create_schedules parser_app/management/commands/schedule_fixtures.json")

У меня ошибка

raise CommandError("Unknown command: %r" % command_name) django_1 | django.core.management.base.CommandError: Неизвестная команда: 'create_schedules parser_app/management/commands/schedule_fixtures.json'

ОБНОВИТЬ

Я пытался выполнить команду как функцию^ но получил ошибку


ile "/project/core_app/wsgi.py", line 14, in <module>
django_1         |     from parser_app.management.commands.start_command import create_schedules
django_1         |   File "/project/parser_app/management/commands/start_command.py", line 1, in <module>
django_1         |     from parser_app.models import Schedule
django_1         |   File "/project/parser_app/models.py", line 7, in <module>
django_1         |     class TimeBase(models.Model):
django_1         |   File "/usr/local/lib/python3.9/site-packages/django/db/models/base.py", line 127, in __new__
django_1         |     app_config = apps.get_containing_app_config(module)
django_1         |   File "/usr/local/lib/python3.9/site-packages/django/apps/registry.py", line 260, in get_containing_app_config
django_1         |     self.check_apps_ready()
django_1         |   File "/usr/local/lib/python3.9/site-packages/django/apps/registry.py", line 138, in check_apps_ready

Неправильный синтаксис, см. ниже для исправления:

call_command("create_schedules", "parser_app/management/commands/schedule_fixtures.json")

Проще было бы не иметь кода в качестве управляющей команды:

# create_schedules.py

def create_schedules(file_path):
   ...
# wsgi.py

import create_schedules as cs

[...]
cs.create_schedules("parser_app/management/commands/schedule_fixtures.json")

Решено с помощью функции ready() в apps.py

Мое решение

class ParserAppConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'parser_app'

    def ready(self):
        from scripts.create_schedules import create_cron_templates

        create_cron_templates()
Вернуться на верх