在Django中生成每日,每周和每月自动报告

时间:2012-12-17 16:05:16

标签: django scheduled-tasks

我想生成定期报告并将其发送给用户。

用户应该能够选择发送的频率和日期/时间(例如,每天9.00,星期一,每周等),以及与报告内容本身相关的其他信息。

您认为在Django中集成它是一个很好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

如果您使用的是unix系统,我建议您使用cron(unix作业调度程序)进行此操作。

您可以使用django-cron,一个包装cron作业调度的Django模块 但我通常会将任务编写为django custom management command,并安排一个常规的cron作业来调用它。

如果你在虚拟python环境中安装了django,你应该运行一个脚本来激活vitualenv,然后调用命令(参见下面的例子)。


在unix系统上,使用virtualenv:

脚本示例(script.sh):

#!/bin/bash
source /path/to/virtualenv/bin/activate
python /path/to/django/project/manage.py custom_command

在cron中添加一行(命令:crontab -e):

* * * * * /path/to/script.sh >> /path/to/log/file.log 2>&1

用所需的时间和频率替换* s(默认crontab文件中的详细信息)

要安装新的计划任务,只需保存crontab文件

即可