我想我做的Django命令习俗每隔一分钟执行。 然而它似乎像python /path/to/project/myapp/manage.py mycommand
似乎并没有同时在目录工作python manage.py mycommand
完美的作品。
我怎样才能做到这一点? 我使用/etc/crontab
有:
****** root python /path/to/project/myapp/manage.py mycommand
我想我做的Django命令习俗每隔一分钟执行。 然而它似乎像python /path/to/project/myapp/manage.py mycommand
似乎并没有同时在目录工作python manage.py mycommand
完美的作品。
我怎样才能做到这一点? 我使用/etc/crontab
有:
****** root python /path/to/project/myapp/manage.py mycommand
我认为问题是,cron是要在一个“裸”的环境中运行脚本,所以你的DJANGO_SETTINGS_MODULE可能是不确定的。 你可能想在一个shell脚本,首先定义DJANGO_SETTINGS_MODULE包这件事
事情是这样的:
#!/bin/bash
export DJANGO_SETTINGS_MODULE=myproject.settings
./manage.py mycommand
让它运行(chmod + X),然后设置cron来运行该脚本来代替。
编辑
我还想说,你可以通过“模块化”这个概念一点点,让这样你的脚本接受作为参数的管理命令。
#!/bin/bash
export DJANGO_SETTINGS_MODULE=myproject.settings
./manage.py ${*}
现在,您的cron作业可以简单地通过“mycommand的”,或者你想从一个cron作业运行的任何其他manage.py命令。
cd /path/to/project/myapp && python manage.py mycommand
通过链接你这样的命令,蟒蛇将不会被执行,除非CD正确地更改目录。
如果你希望你的Django生活带来很多更简单,使用Django的命令扩展您的项目中:
http://code.google.com/p/django-command-extensions/
你会发现一个名为“runScript中”,所以你只需将该命令添加到你的crontab行命令:
****** root python /path/to/project/myapp/manage.py runscript mycommand
而这样的脚本将与Django的上下文环境中执行。
这就是我在我的项目之一最近做了,(我保持每一个项目我工作venvs,所以我assumning你有venvs)
***** /path/to/venvs/bin/python /path/to/app/manage.py command_name
这非常适合我。
在runScript中引伸无据可查。 与Django的命令这一个可以去任何地方在您的项目,需要一个脚本文件夹。 该.py文件需要一个run()函数。
如果它是一个独立的脚本,你需要这样做:
from django.conf import settings from django.core.management import setup_environ setup_environ(settings) #your code here which uses django code, like django model
如果它的Django的命令,它更容易: https://coderwall.com/p/k5p6ag
在(管理/命令/ exporter.py)
from django.core.management.base import BaseCommand, CommandError class Command(BaseCommand): args = '' help = 'Export data to remote server' def handle(self, *args, **options): # do something here
然后,在命令行:
$ python manage.py exporter
现在,很容易一个新的cron任务添加到Linux系统,使用crontab中:
$ crontab -e
or $ sudo crontab -e if you need root privileges
在crontab文件,例如用于运行此命令每隔15分钟,这样的事情:
# m h dom mon dow command
*/15 * * * * python /var/www/myapp/manage.py exporter