当Django管理命令在Dotcloud中作为cron作业运行时,Logentries失败

时间:2014-03-26 01:51:58

标签: django cron dotcloud logentries

我在Dotcloud上运行了一个Django应用程序。我尝试添加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', },

当我dotcloud env list时,LOGENTRIES_TOKEN就在那里。

这是症状的摘要 -
- Logetries日志记录在正常使用情况下从站点进行 - 如果我手动运行脚本 - dotcloud run www ~/current/scripts/load_definitions.sh它可以正常运行 - 如果我从我的settings.py中删除了Logentries设置,则可以使用cron作业 - 如果Logentries条目在我的settings.py

中,则cron作业失败

我花了好几个小时试图找到解决方案。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

您是否尝试过直接从~/environment.json~/environment.yml读取值,而不是从导出的shell环境中读取值?

答案 1 :(得分:0)

我已经解决了这个问题 这是之前的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修复它。也许有人可以告诉我它为什么不按原样运作?