Django пользовательская команда и крон

Когда вы запускаете поток, вы выполняете метод некоторого выбранного класса. Все атрибуты этого класса видимы.

  Worker myWorker = new Worker( /* arguments */ );

  Thread myThread = new Thread(new ThreadStart(myWorker.doWork));

  myThread.Start();

Ваш поток теперь находится в методе doWork () и может видеть любые атрибуты myWorker, которые сами могут быть другими объектами. Теперь вам просто нужно быть осторожным, чтобы иметь дело со случаями, когда несколько потоков одновременно обращаются к этим атрибутам.

15
задан Peter Mortensen 15 April 2010 в 13:55
поделиться

4 ответа

Я думаю, проблема в этот cron будет запускать ваши скрипты в «голой» среде, поэтому ваш DJANGO_SETTINGS_MODULE, скорее всего, не определен. Вы можете заключить это в сценарий оболочки, который сначала определяет DJANGO_SETTINGS_MODULE

Примерно так:

#!/bin/bash

export DJANGO_SETTINGS_MODULE=myproject.settings 
./manage.py mycommand

Сделайте его исполняемым (chmod + x), а затем настройте cron для запуска скрипта вместо этого.

Изменить

] Я также хотел сказать, что вы можете "модулировать"

19
ответ дан 1 December 2019 в 00:50
поделиться

If you want your Django life a lot more simple, use django-command-extensions within your project:

http://code.google.com/p/django-command-extensions/

You'll find a command named "runscript" so you simply add the command to your crontab line:

****** root python /path/to/project/myapp/manage.py runscript mycommand

And such a script will execute with the Django context environment.

9
ответ дан 1 December 2019 в 00:50
поделиться
cd /path/to/project/myapp && python manage.py mycommand

Если объединить ваши команды таким образом, python не будет выполняться, если cd не изменится правильно каталог.

12
ответ дан 1 December 2019 в 00:50
поделиться

Расширение runscript не было хорошо документировано. В отличие от команды django, она может идти в любом месте вашего проекта и требует папки scripts. Для .py файла требуется функция run().

0
ответ дан 1 December 2019 в 00:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: