我知道有关于如何在Django"中定期执行任务的问题。比如this post。但我想知道哪个是最佳选择,使用该帖子中提到的选项(主要是Celerity或cron)或从Javascript / jQuery处理期刊任务。
我想要完成的只是在某个时间每天执行一项任务。从" view.py"中调用函数。该函数将连接到URL,下载文件并在该文件中搜索信息,然后将其存储在数据库中。之后,使用新信息刷新主页。
哪种优点和缺点?
答案 0 :(得分: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
答案 1 :(得分:0)
我无法看到客户端javascript如何在这里提供任何帮助(如果它在运行服务器端,为什么要使用javascript?)
如果您的项目中有芹菜的其他用途,那么使用它来运行计划任务是有意义的,而'pro'是在部署时不需要任何手动crontab设置。
现在,如果只运行这个必须安装和设置(并运行!)的单个操作,那么整个芹菜堆栈(celery + rabbitmq + redis)可能只是一个普通的cron作业(或者你的任何调度程序)系统)。
此外,如果要执行的任务与HTTP请求/响应周期无关,则它在您的视图中无关。默认情况下,django-admin startapp
会创建包含views.py
,models.py
和urls.py
模块的包存根,但您可以根据需要添加任意数量的其他任意模块。对于要从命令行运行的脚本(cronjobs就是这种情况),惯用的解决方案是将它们写为custom management commands。