我想让django-cron
工作,而不是。我按照here指令设置了我的cron,但问题是我的作业只在我在命令行输入python manage.py runcrons
并且每5分钟没有运行作业时运行。我不知道还能做什么。我已经在crontabs
和chronograph
上阅读了其他文档但很困惑。我是否与cron或计时码表一起安装crontabs,或者cron只能用django-cron正常工作。另外我如何让我的工作自动运行。在文档here中,我阅读了Now 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.
。这是什么意思。我在这里想念的是什么我输了。帮助
Settings.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()
我应该提一下,在Windows平台上使用pycharm运行django ...
答案 0 :(得分:2)
问题的根源是操作系统。 Web服务器不是那种称为cronjobs的deamon,它只是处理Web请求。要在Windows上调用定期任务,您需要使用Windows任务计划程序:
What is the Windows version of cron?
解决问题的其他方法是在celery beat模式下启动celery deaemon。
http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html
这是一个更难的方法,如果你有一个非常简单的应用程序,你不需要使用芹菜。但是在很多情况下,队列是最好的解决方案。
答案 1 :(得分:0)
安装django-crontab。
pip install django-crontab
将settings.py更改为包含django-crontab
INSTALLED_APPS = (
'django_crontab',
...
)
CRONJOBS = [
('*/5 * * * *', 'myproject.cron.my_scheduled_job')
]
在您的app目录中创建一个cron.py文件
def my_scheduled_job():
#do something
每次包含或更新您的cron作业时都运行此命令。
python manage.py crontab add
运行本地服务器来测试你的cron:
python manage.py runserver
你完成了! :)
答案 2 :(得分:0)
你可以执行'runcrons'programaticaly,如下所示:
from django.core.management import call_command
call_command('runcrons')
例如,我将上述行放在我的wsgi.py
中