26 lines
962 B
Python
26 lines
962 B
Python
|
import os
|
||
|
|
||
|
from django.core.management.base import BaseCommand, CommandError
|
||
|
|
||
|
from orchestra.utils.paths import get_site_dir
|
||
|
from orchestra.utils.sys import run
|
||
|
|
||
|
|
||
|
class Command(BaseCommand):
|
||
|
help = 'Runs periodic tasks.'
|
||
|
|
||
|
def handle(self, *args, **options):
|
||
|
context = {
|
||
|
'site_dir': get_site_dir(),
|
||
|
'orchestra_beat': run('which orchestra-beat').stdout.decode('utf8'),
|
||
|
'venv': os.environ.get('VIRTUAL_ENV', ''),
|
||
|
}
|
||
|
content = run('crontab -l').stdout.decode('utf8')
|
||
|
if 'orchestra-beat' not in content:
|
||
|
if context['venv']:
|
||
|
content += "* * * * * . %(venv)s/bin/activate && %(orchestra_beat)s %(site_dir)s/manage.py; deactivate" % context
|
||
|
else:
|
||
|
content += "* * * * * %(orchestra_beat)s %(site_dir)s/manage.py" % context
|
||
|
context['content'] = content
|
||
|
run("echo '%(content)s' | crontab" % context, display=True)
|