2016-08-31 3 views
0

Я пытаюсь настроить cronjob на моем сервере Ubuntu для запуска файла django .py, но сначала у меня проблемы с запуском скрипта.Пользовательская команда Django - Не реализована ошибка

Я использую команду python3 /opt/mydir/manage.py updatefm

который производит ошибку:

File "/opt/mydir/manage.py", line 15, in <module> 
    execute_from_command_line(sys.argv) 
    File "/usr/local/lib/python3.4/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line 
    utility.execute() 
    File "/usr/local/lib/python3.4/site-packages/django/core/management/__init__.py", line 392, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/usr/local/lib/python3.4/site-packages/django/core/management/base.py", line 242, in run_from_argv 
    self.execute(*args, **options.__dict__) 
    File "/usr/local/lib/python3.4/site-packages/django/core/management/base.py", line 285, in execute 
    output = self.handle(*args, **options) 
    File "/usr/local/lib/python3.4/site-packages/django/core/management/base.py", line 324, in handle 
    raise NotImplementedError() 
NotImplementedError 

Может кто-нибудь просветить мое на то, что я делаю неправильно? Вот мой сценарий и структура:

/mydir 
    /mydir 
     __init__.py 
     /management 
     __init__.py 
     /commands 
      updatefm.py 

updatefm.py

class Command(BaseCommand): 
    args = '' 
    help = 'Help Test' 
    def update_auto(self, *args, **options): 
     hi = 'test' 

имя Мое приложение отображается в settings.py, как это должно быть.

+0

Вы, кажется, отсутствует '__init __. Py' внутри вашего'/каталога commands'. Кроме того, я не уверен на 100%, но я считаю, что вы также должны импортировать указанную команду в свой 'manage.py' – Av4t4r

+0

. Я думаю, что в документации, о которой говорится, мне нужно только' __init __. Py' в каталоге '/ commands' если я использую 'python2' https://docs.djangoproject.com/en/1.7/howto/custom-management-commands/#howto-custom-management-commands – rednaxela

+1

' NotImplementedError' означает, что вы не внесли полный API для подкласса и родительский класс не могут сделать это для вас. Он создается методом 'handle'. Вы этого не реализуете. Похоже, вы должны. –

ответ

1

Проверьте __init__.py внутри commands папка. Затем вы должны использовать handle методу

class Command(BaseCommand): 
    args = '' 
    help = 'Help Test' 
    def handle(self, *args, **options): 
     hi = 'test 

Для получения дополнительной информации https://docs.djangoproject.com/en/dev/howto/custom-management-commands/#django.core.management.BaseCommand.handle

+0

Ahh, я не понимал, что на самом деле его нужно называть 'handle()'. благодаря – rednaxela

1

Классы Наследование от BaseCommand должен реализовать метод handle.

В вашем случае, вы должны изменить

def update_auto(self, *args, **options):

в

def handle(self, *args, **options):

Смежные вопросы