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