How to get django-cron to work automatically
Solution 1
The root of your problem leads to operating system. Webserver is not that kind of deamon that calls your cronjobs, it just handels web requests. To call periodic tasks on windows you need to use Windows Task Scheduler:
What is the Windows version of cron?
Other way to solve your problem is to start celery deaemon in in celery beat mode.
http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html
This is a harder way, if you have very simple application you don't need to use celery. But there are many cases when queues are the best solution.
Solution 2
Install django-crontab instead.
pip install django-crontab
Change your settings.py to include django-crontab
INSTALLED_APPS = (
'django_crontab',
...
)
CRONJOBS = [
('*/5 * * * *', 'myproject.cron.my_scheduled_job')
]
create a cron.py file in your app directory
def my_scheduled_job():
#do something
run this everytime you include or update your cron job.
python manage.py crontab add
run your local server to test your cron:
python manage.py runserver
And you are done! :)
Related videos on Youtube
Comments
-
flexxxit about 2 years
I am trying to get
django-cron
working and its not. I followed the instruction here to set up my cron but the problem is that my job only runs when i typepython manage.py runcrons
on my command line and the job is not run every 5 minutes. I don't know what else to do. I have read other documents oncrontabs
andchronograph
but am confused. Do I install crontabs along with cron or chronograph or will cron work fine with only django-cron. Also how do I get my job to run automatically. In the documentation here I readNow everytime you run the management command python manage.py runcrons all the crons will run if required. Depending on the application the management command can be called from the Unix crontab as often as required. Every 5 minutes usually works for most of my applications.
. What does this mean. What am I missing here. Am lost. HELPSettings.py
CRON_CLASSES = ( "myapp.views.MyCronJob", ) INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'django_cron', 'django.contrib.admin', 'django.contrib.admindocs', 'myapp', )
views.py
from django_cron import CronJobBase, Schedule class MyCronJob(CronJobBase): RUN_EVERY_MINS = 10 # every 10 min schedule = Schedule(run_every_mins=RUN_EVERY_MINS) code = 'my_app.my_cron_job' # a unique code def do(self): print "10 min Cron" theJob()
I should mention that am using pycharm on a windows platform to run django...
-
62009030 over 7 yearsFor some reason, it's not working for me. Could you help me with this?
-
Sahana Prabhakar about 7 yearsI cant get this working. My job doesnt get executed. is there anything to be added?
-
gamer almost 5 yearswhy /5 ? cant we write without this ? for 1 week what we have to add ?
-
Llewellyn Hattingh over 3 yearsWould it work if you are working in Git Bash on a Windows computer?