diango中如何实现定时任务的邮件批量发送
时间: 2023-07-18 13:26:35 浏览: 179
任务计划,制作定时发送功能
5星 · 资源好评率100%
在 Django 中实现定时任务的邮件批量发送,可以使用 Celery 和 Django-celery-beat 来完成。
首先需要安装 Celery 和 Django-celery-beat,可以通过 pip install celery django-celery-beat 命令进行安装。
接着,需要在 Django 项目中配置 Celery,具体步骤如下:
1. 在 settings.py 文件中添加以下配置:
```
CELERY_BROKER_URL = 'amqp://guest:guest@localhost:5672//' # RabbitMQ 的连接地址
CELERY_RESULT_BACKEND = 'rpc://' # 结果存储方式,这里使用 RPC
CELERY_TIMEZONE = 'Asia/Shanghai' # 时区
CELERY_TASK_SERIALIZER = 'json' # 任务序列化方式
CELERY_RESULT_SERIALIZER = 'json' # 结果序列化方式
CELERY_ACCEPT_CONTENT = ['json'] # 接受的内容类型
```
2. 在项目中创建一个 tasks.py 文件,用于编写定时任务的代码。例如,下面的代码实现了每天定时发送邮件的功能:
```
from celery import task
from django.core.mail import send_mail
from datetime import datetime, timedelta
@task
def send_daily_email():
today = datetime.now().strftime('%Y-%m-%d')
subject = f'今日邮件主题{today}'
message = '今日邮件内容'
from_email = '发件人邮箱'
recipient_list = ['收件人邮箱1', '收件人邮箱2']
send_mail(subject, message, from_email, recipient_list)
```
3. 在 settings.py 文件中添加以下配置,用于设置定时任务的调度时间:
```
CELERY_BEAT_SCHEDULE = {
'send_daily_email': {
'task': 'tasks.send_daily_email',
'schedule': timedelta(days=1),
},
}
```
这里的 'schedule': timedelta(days=1) 表示每天执行一次定时任务。
最后,在命令行中启动 Celery 任务调度器和 Celery worker,命令如下:
```
celery -A your_project_name worker -l info
celery -A your_project_name beat -l info
```
这样就完成了在 Django 中实现定时任务的邮件批量发送的功能。
阅读全文