django框架的运行流程(django cron choice)
http://stackoverflow.com/questions/3200001/using-crontab-with-django
Kronos
Kronos makes it really easy to schedule tasks with cron.
Usage
Define tasks
Kronos collects tasks from cron modules in your project root and each of your applications:
# app/cron.py import kronos @kronos.register(0 0 * * *) def complain(): complaints = [ "I forgot to migrate our applicationss cron jobs to our new server! Darn!", "Im out of complaints! Damnit!" ] print random.choice(complaints)Run tasks manually
$ python manage.py runtask complain I forgot to migrate our applicationss cron jobs to our new server! Darn!Register tasks with cron
$ python manage.py installtasks Installed 1 task.Installation
$ pip install django-kronos... and add kronos to INSTALLED_APPS.
Contribute
Fork the repository. Do your thing. Open a pull request. Receive cake.I love you
Johannes Gorset made this. You should tweet me if you cant get it
to work. In fact, you should tweet me anyway.slowchop.com
http://slowchop.com/2006/09/17/creating-a-django-cron-job/
http://goo.gl/ffgS
EnvironmentError: Environment variable DJANGO_SETTINGS_MODULE is undefined.
#!/usr/bin/env python import os os.environ[DJANGO_SETTINGS_MODULE] = settings from mytestapp.views import daily_job daily_job() import sys import os os.environ[DJANGO_SETTINGS_MODULE] = settings module_name = sys.argv[1] function_name = .join(sys.argv[2:]) exec(import %s % module_name) exec(%s.%s % (module_name, function_name)) python run.py mytestapp.views daily_job() 0 0 * * * python /path/to/mytestproject/run.py mytestapp.views daily_job()Chronograph
Control django-admin commands via the web.
Creating cron jobs for Django apps can be a pain, annoying and repetitive. With
django-chronographyou simply create a single cron job to run every minute,
point it at your sites directory and run manage.py cron. Then from the admin
you can add jobs.Note
django-chronograph supports Django 1.1+.
Installation and Usage
Read docs/overview.txt for more information, build the documentation with
Sphinx or view them online here.You can also grab the latest release from PyPI:
pip install django-chronographScheduled Tasks (or cron jobs) with Django
In order for this to work, I create a cron.py module for all of my INSTALLED_APPS. This module must contain a run method. Other than that, it can work just like any other python module (using djangos internals as necessary).
For example, if you had an app called utils (possibly located at mysite/utils/), and if you just wanted to delete all sessions with old expire_dates, your cron.py (which you would put in mysite/utils/cron.py) might look something like this:
Now, the meat of this solution checks for the cron.py module in all of the apps in mysite.settings.INSTALLED_APPS, and invokes its run() method. Ive also named this module cron.py, but this gets stored in Djangos project directory (e.g. mysite)... the same directory where your settings.py is located.
The final piece of this puzzle lies in the BASH script used to invoke the above python module. It makes sure the appropriate environment variables are set and then it invokes the above module. I also store this in my django project directory (as cron.sh), and I use cron to schedule it to run.
Using cron, youd schudule this to run every morning at 6am by editing your crontab and adding the following:
Thats it. This has been working for me, but there is at least one major pitfall: All of your apps cron tasks get run at the same time. This works well if your apps need to do something once a day (which has been my requirement), but this probably wont work well if you have some apps that need to run tasks at differing times.
There are also other solutions to this (none of which Ive tried). Theres a snippet at http://www.djangosnippets.org/snippets/1126/ which looks interesting. Then theres the django-cron app which seems to be fairly flexible in how it works, and it doesnt require cron (so this is a plus if you cant set a crontab or if youre on Windows!)
Thanks in advance for any feedback... suggestions are always welcome!
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!