Сбой Logentries, когда команда управления Django запускается как задание cron в Dotcloud

У меня есть приложение Django, работающее на Dotcloud. Я попытался добавить ведение журнала Logentries, которое работает в обычном режиме для моего сайта, но приводит к сбою заданий cron из-за этой ошибки -
Traceback (most recent call last): File "/home/dotcloud/current/my_project/manage.py", line 10, in <module> execute_from_command_line(sys.argv) File "/home/dotcloud/env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line utility.execute() File "/home/dotcloud/env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/home/dotcloud/env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 261, in fetch_command commands = get_commands() File "/home/dotcloud/env/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 107, in get_commands apps = settings.INSTALLED_APPS File "/home/dotcloud/env/local/lib/python2.7/site-packages/django/conf/__init__.py", line 54, in __getattr__ self._setup(name) File "/home/dotcloud/env/local/lib/python2.7/site-packages/django/conf/__init__.py", line 50, in _setup self._configure_logging() File "/home/dotcloud/env/local/lib/python2.7/site-packages/django/conf/__init__.py", line 80, in _configure_logging logging_config_func(self.LOGGING) File "/usr/lib/python2.7/logging/config.py", line 777, in dictConfig dictConfigClass(config).configure() File "/usr/lib/python2.7/logging/config.py", line 575, in configure '%r: %s' % (name, e)) ValueError: Unable to configure handler 'logentries_handler': expected string or buffer

Это один из скриптов, запускаемых из cron -

#!/bin/bash
echo "Loading definitions - check /var/log/supervisor/availsserver.log for results"
. /etc/profile
/home/dotcloud/env/bin/python /home/dotcloud/current/my_project/manage.py load_definitions

Это мои настройки для Logentries -
'logentries_handler': { 'token': os.getenv("LOGENTRIES_TOKEN"), 'class': 'logentries.LogentriesHandler' } .... 'logentries': { 'handlers': ['logentries_handler'], 'level': 'INFO', },

LOGENTRIES_TOKEN там, когда я делаю dotcloud env list,

Это краткое изложение симптомов -
- Logentries logging работает с сайта в обычном режиме.
- Если я вручную запускаю скрипт - dotcloud run www ~/current/scripts/load_definitions.sh оно работает.
- Если я удалю настройки Logentries из моего settings.py рабочие места cron работают.
- Задания cron не выполняются, если записи Logentries находятся в моем settings.py

Я часами пытался найти решение. Кто-нибудь может помочь?

2 ответа

Решение

Я решил это.
Это crontab раньше -
0 13 * * * /home/dotcloud/current/scripts/load_definitions.sh 2>&1 | mail -s "Load definitions result" myemail@example.com.au
который не работал.
Вот как это сейчас -
0 13 * * * /bin/bash -l -c '/home/dotcloud/current/scripts/load_definitions.sh' 2>&1 | mail -s "Load definitions result" myemail@example.com.au
который работает. Добавление /bin/bash -l -c починил это. Может быть, кто-то может сказать мне, почему это не сработало?

Вы пытались прочитать значение непосредственно из ~/environment.json или же ~/environment.yml, а не из экспортированной оболочки?

Другие вопросы по тегам