Hel*_*nar 15 django cron crontab django-admin
我希望我的定制Django命令每分钟执行一次.然而,似乎python /path/to/project/myapp/manage.py mycommand
在目录python manage.py mycommand
工作完美时似乎不起作用.
我怎样才能做到这一点?我使用/etc/crontab
:
****** root python /path/to/project/myapp/manage.py mycommand
Run Code Online (Sandbox Code Playgroud)
Joe*_*way 19
我认为问题是cron将在"裸"环境中运行您的脚本,因此您的DJANGO_SETTINGS_MODULE可能未定义.您可能希望将其包装在首先定义DJANGO_SETTINGS_MODULE的shell脚本中
像这样的东西:
#!/bin/bash
export DJANGO_SETTINGS_MODULE=myproject.settings
./manage.py mycommand
Run Code Online (Sandbox Code Playgroud)
使其可执行(chmod + x),然后设置cron来代替运行脚本.
编辑
我还想说,你可以稍微"模块化"这个概念,并使你的脚本接受管理命令作为参数.
#!/bin/bash
export DJANGO_SETTINGS_MODULE=myproject.settings
./manage.py ${*}
Run Code Online (Sandbox Code Playgroud)
现在,您的cron作业可以简单地传递"mycommand"或您想要从cron作业运行的任何其他manage.py命令.
dav*_*her 12
cd /path/to/project/myapp && python manage.py mycommand
Run Code Online (Sandbox Code Playgroud)
通过链接这样的命令,除非cd正确更改目录,否则不会执行python.
如果您希望Django生活更简单,请在项目中使用django-command-extensions:
http://code.google.com/p/django-command-extensions/
您将找到名为"runscript"的命令,因此您只需将命令添加到crontab行:
****** root python /path/to/project/myapp/manage.py runscript mycommand
Run Code Online (Sandbox Code Playgroud)
这样的脚本将使用Django上下文环境执行.
归档时间: |
|
查看次数: |
12476 次 |
最近记录: |