运行 Django 应用程序中周期性任务的清晰分步过程
A clear step by step process for running a periodic task in a django application
我一直在尝试在 Django 中创建一个周期性任务,但是有很多版本限制并且没有一个明确的解释。
我推荐Celery
。什么是 Celery?
Celery 支持调度任务。检查 this doc
首先,您想按照本指南创建一个管理命令。
https://docs.djangoproject.com/en/2.1/howto/custom-management-commands/
假设我们想要每 5 分钟 运行 示例中的 closepoll
命令。
然后,您需要为 运行 此命令创建一个脚本。
Linux / MacOS:
#!/bin/bash -e
cd path/to/your/django/project
source venv/bin/activate # if you use venv
python manage.py closepoll # maybe you want to >> /path/to/log so you can log the results
在命令行中将文件存储为 run_closepoll.sh
、运行 chmod +x run_closepoll.sh
现在我们可以使用 crontab 来运行我们的命令
运行 crontab -e
在你的命令行
添加此行:
*/5 * * * * /path/to/run_closepoll.sh
现在该命令将每 5 分钟 运行。
如果你不熟悉 crontab,你可以使用这个网站
https://crontab-generator.org/
Windows:
Same content as the above example, but remove the first line and save as run_closepoll.bat
在您的开始菜单中,搜索 Task Scheduler
,按照 GUI 上的说明操作,从那里开始应该非常简单。
有关任务计划程序的详细信息,请参阅此处:https://docs.microsoft.com/en-us/windows/desktop/taskschd/using-the-task-scheduler
这篇博客解释的很清楚
https://medium.com/@yehandjoe/celery-4-periodic-task-in-django-9f6b5a8c21c7
谢谢!!!
我一直在尝试在 Django 中创建一个周期性任务,但是有很多版本限制并且没有一个明确的解释。
我推荐Celery
。什么是 Celery?
Celery 支持调度任务。检查 this doc
首先,您想按照本指南创建一个管理命令。 https://docs.djangoproject.com/en/2.1/howto/custom-management-commands/
假设我们想要每 5 分钟 运行 示例中的 closepoll
命令。
然后,您需要为 运行 此命令创建一个脚本。
Linux / MacOS:
#!/bin/bash -e
cd path/to/your/django/project
source venv/bin/activate # if you use venv
python manage.py closepoll # maybe you want to >> /path/to/log so you can log the results
在命令行中将文件存储为 run_closepoll.sh
、运行 chmod +x run_closepoll.sh
现在我们可以使用 crontab 来运行我们的命令
运行 crontab -e
在你的命令行
添加此行:
*/5 * * * * /path/to/run_closepoll.sh
现在该命令将每 5 分钟 运行。
如果你不熟悉 crontab,你可以使用这个网站
https://crontab-generator.org/
Windows:
Same content as the above example, but remove the first line and save as run_closepoll.bat
在您的开始菜单中,搜索 Task Scheduler
,按照 GUI 上的说明操作,从那里开始应该非常简单。
有关任务计划程序的详细信息,请参阅此处:https://docs.microsoft.com/en-us/windows/desktop/taskschd/using-the-task-scheduler
这篇博客解释的很清楚
https://medium.com/@yehandjoe/celery-4-periodic-task-in-django-9f6b5a8c21c7
谢谢!!!