Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Подтянуть orm и logging в сторонний скрипт. [RSS Feed]

#1 Дек. 5, 2015 18:00:31

soln
От:
Зарегистрирован: 2011-11-02
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

Подтянуть orm и logging в сторонний скрипт.

Приветствую.
Появилась необходимость заполучить orm и конфигурацию logging в сторонний (работающий по крону ) скрипт.
На шел вот это:
calling-django-setup-is-required-for-standalone-django
И модель приезжает, а вот с логером проблемы.

                                                            
 import logging                                                                   
 import os                                                                        
 import sys                                                                       
 os.environ['DJANGO_SETTINGS_MODULE'] = "Dance.settings"                        
 sys.path.append("/usr/local/www/Dance/")                                       
                                                                                  
 import django                                                                    
 from django.conf import settings                                                 
 from Dance import settings as may_settings                                     
 settings.configure(may_settings, DEBUG=True)                                     
 django.setup()                                                                   
 core_log = logging.getLogger('app.messenger.core')                               
 core_log.debug('core starting')                  

При исполнении кидает эксепшен.
AttributeError: ‘module’ object has no attribute 'LOGGING_CONFIG

однако:
soln@dance:/usr/local/www/Dance$ grep LOGGING_CONFIG /usr/local/lib/python2.7/dist-packages/django/conf/global_settings.py ./Dance/settings.py
/usr/local/lib/python2.7/dist-packages/django/conf/global_settings.py:LOGGING_CONFIG = 'logging.config.dictConfig'.

То есть LOGGING_CONFIG определён в глобальных настройках django, однако похоже было перезаписан в процессе вызова settings.configure(may_settings, DEBUG=True) .

Что я делаю не так?

Ps.
Возможно мне вообще не стоит отрывать куски django и пихать их в крон. Может это принято делать иначе.
К примеру. Задача, есть у вас список пользователей, вы хотите отправить раз в год им письмо, в день рождения. И где то в их аккаунтах (orm) добавить к их счету кокой то там интаджер. Как принято реализовывать такое?



Отредактировано soln (Дек. 5, 2015 18:01:29)

Офлайн

#2 Дек. 5, 2015 18:25:22

buddha
От:
Зарегистрирован: 2012-03-02
Сообщения: 422
Репутация: +  15  -
Профиль   Отправить e-mail  

Подтянуть orm и logging в сторонний скрипт.

Создай команду в проекте , а в кроне запусти её через абсолютный путь до сценария /Project/dir/manage.py your_command. Это рекомендуемый и общепринятый способ запуска сценариев с джанго-настройками. Проблемы с логером должны уйти. Вручную тебе прописывать инициализацию настроек и т.п. не будет необходимости, ссылка на доку ниже.

Standalone scripts

Custom management commands are especially useful for running standalone scripts or for scripts that are periodically executed from the UNIX crontab or from Windows scheduled tasks control panel.
https://docs.djangoproject.com/en/dev/howto/custom-management-commands/

Отредактировано buddha (Дек. 5, 2015 18:28:23)

Офлайн

#3 Дек. 5, 2015 20:18:09

soln
От:
Зарегистрирован: 2011-11-02
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

Подтянуть orm и logging в сторонний скрипт.

buddha
Создай команду в проекте , а в кроне запусти её через абсолютный путь до сценария /Project/dir/manage.py your_command. Это рекомендуемый и общепринятый способ запуска сценариев с джанго-настройками. Проблемы с логером должны уйти. Вручную тебе прописывать инициализацию настроек и т.п. не будет необходимости, ссылка на доку ниже.
Спасибо.
Также нашел про Асинхронные задания в Django c помощью Celery .



Офлайн

  • Начало
  • » Django
  • » Подтянуть orm и logging в сторонний скрипт.[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version