目录结构
1 2 3 4 5 6 7 8 9 10 11
| . ├── celery_tasks │ ├── __init__.py │ ├── config.py │ ├── email │ │ ├── __init__.py │ │ └── tasks.py │ ├── html │ │ ├── __init__.py │ │ └── tasks.py │ ├── main.py
|
config.py
1 2 3 4
|
broker_url = "redis://192.168.103.210/7"
|
main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| from celery import Celery import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings.dev")
celery_app = Celery('project')
celery_app.config_from_object('celery_tasks.config')
celery_app.autodiscover_tasks(['celery_tasks.email', 'celery_tasks.html'])
|
celery_tasks/email/tasks.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| from celery_tasks.main import celery_app from django.core.mail import send_mail from django.conf import settings
@celery_app.task(name='send_verify_email') def send_verify_email(to_email, verify_url): """ 发激活邮箱的邮件 :param to_email: 收件人邮箱 :param verify_url: 邮箱激活url :return: """ subject = "邮箱验证" html_message = '<p>尊敬的用户您好!</p>' \ '<p>您的邮箱为:%s 。请点击此链接激活您的邮箱:</p>' \ '<p><a href="%s">%s<a></p>' % (to_email, verify_url, verify_url) send_mail(subject, '', settings.EMAIL_FROM, [to_email], html_message=html_message)
|
运行celery
1 2
| 运行命令: celery -A celery_tasks.main worker -l info
|
函数调用
1 2 3 4 5 6 7 8 9 10
| class EmailSerializer(serializers.ModelSerializer): """更新邮箱序列化器""" ... def update(self, instance, validated_data): instance.email = validated_data.get('email') instance.save() verify_url = instance.generate_email_verify_url() send_verify_email.delay(instance.email, verify_url=verify_url) return instance
|