2017-08-03 54 views
0

我知道有关于“如何在Django中制作定期任务”的问题,如this post。但是我想知道哪个是最好的选择,可以使用该帖子中提到的选项(主要是Celerity或cron),或者使用Javascript/jQuery处理定期任务。期刊任务Django:Celerity vs Javascript/jQuery

我想完成的是在特定时间每天简单地执行一项任务。从“view.py”调用一个函数。该功能将连接到URL,下载文件并在该文件中搜索信息,然后将其存储在数据库中。之后,用新信息刷新主页。

这将是优点和缺点?

+0

你必须提及这种情况,以及你想要应用的地方。两种方法对于不同的情况都是正确的 –

+0

噢对了,我走了编辑我的问题 –

+0

@ArpitSolanki完成,对不起再次 –

回答

0

我看不出客户端JavaScript可能是任何帮助在这里(如果它的运行服务器端为什么要使用javascript呢?)

如果您在项目中有其他用途的芹菜,那么使用它来运行计划任务是有道理的,而'亲'是它不需要任何手动crontab设置部署时。如果只是运行这个单独的操作而不得不安装和设置(并运行!),与普通的cron作业相比,整个芹菜堆栈(芹菜+ rabbitmq + redis)可能只是矫枉过正(或者任何调度程序存在你的系统)。另外,如果要执行的任务与HTTP请求/响应周期无关,则它在视图中无关紧要。默认情况下,django-admin startapp创建一个包存根,其中包含views.py,models.pyurls.py模块,但您可以根据需要添加其他任意模块。对于要从​​命令行运行的脚本(这是cronjobs的情况),惯用的解决方案是将它们编写为custom management commands

1

从javascript运行周期性任务当然不是一种选择,因为它需要您的前端来调用您的视图和运行任务。

我的建议是使用Celery运行定期任务,因为它很容易设置,在你的情况下,它只需要几行代码来运行任务。

下面是如何运行周期性任务的例子:

from celery.task.schedules import crontab 
from celery.decorators import periodic_task 

@periodic_task(run_every=crontab(minute=0, hour=0) ) 
def every_monday_morning(): 
    print("Execute every day at midnight") 

参考文献:docs

+0

感谢您的早期回复,我无法测试它。从Django项目中的不同python脚本(view.py,urls.py,models.py)我猜我需要添加此代码的将是“views.py”,但我不确定。如果你可以确认。 –

+0

我注意到你引用的“Refs”是一个旧版本,更新后的将会是[following](http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html) , 我错了吗? –

+0

您的链接是正确的。对旧链接抱歉。无论您希望每天运行哪些代码,只需将其添加到上面提到的函数中,然后启动芹菜工。 –