Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk melaksanakan pemprosesan tugas tak segerak menggunakan Celery, Redis dan Django
Cara menggunakan Celery, Redis dan Django untuk melaksanakan pemprosesan tugas tak segerak
Pengenalan:
Apabila membangunkan aplikasi web, kami sering menghadapi tugas yang mengambil banyak masa untuk dilaksanakan, seperti menghantar e-mel, menjana fail PDF, dsb. . Jika tugasan ini dilaksanakan dalam urutan utama, pengguna perlu menunggu pelaksanaan tugasan selesai sebelum menerima respons, yang menjejaskan pengalaman pengguna. Untuk meningkatkan prestasi, kami boleh menggunakan pemprosesan tugas tak segerak untuk melaksanakan tugasan yang memakan masa ini di latar belakang supaya pengguna boleh mendapatkan respons dengan cepat. Artikel ini akan memperkenalkan cara menggunakan Celery, Redis dan Django untuk melaksanakan pemprosesan tugas tak segerak dan memberikan contoh kod terperinci.
1. Apakah itu Celery, Redis dan Django
2. Pasang dan konfigurasikan Saderi, Redis dan Django
Pasang Saderi dan Redis:
pip install celery pip install redis
Konfigurasi Saderi:
Tambah konfigurasi berikut dalam fail projek settings.py Djangee:
Buat aplikasi dalam projek Django dan tentukan tugas tak segerak.
# Celery配置 CELERY_BROKER_URL = 'redis://localhost:6379/0' CELERY_RESULT_BACKEND = 'redis://localhost:6379/0' CELERY_ACCEPT_CONTENT = ['json'] CELERY_RESULT_SERIALIZER = 'json' CELERY_TASK_SERIALIZER = 'json' CELERY_TIMEZONE = 'Asia/Shanghai'4. Menulis pandangan Django dan menguji tugas tak segerak
Tulis fungsi pandangan dalam fail views.py aplikasi Django untuk menerima permintaan pengguna dan memanggil tugas tak segerak.
# 创建Django应用 python manage.py startapp myapp # 在myapp/tasks.py中定义异步任务 from celery import shared_task @shared_task def send_email_task(email): # 发送邮件的逻辑
Lakukan arahan berikut dalam baris arahan untuk memulakan pekerja Saderi:
from django.shortcuts import render from myapp.tasks import send_email_task def send_email(request): # 获取用户请求参数 email = request.GET.get('email') # 调用异步任务 send_email_task.delay(email) return render(request, 'send_email.html')
Mulakan pelayan pembangunan Django, akses URL untuk menghantar e-mel, dan pas parameter e-mel. Saderi akan meletakkan tugas itu ke dalam baris gilir mesej dan melaksanakannya di latar belakang.
celery -A your_django_project_name worker --loglevel=info
Pemprosesan tugas tak segerak boleh dilaksanakan dengan mudah menggunakan Celery, Redis dan Django. Dengan melaksanakan tugas yang memakan masa di latar belakang, prestasi dan pengalaman pengguna aplikasi web boleh dipertingkatkan dengan ketara. Dalam pembangunan sebenar, tugasan juga boleh dioptimumkan dan dikembangkan mengikut keperluan khusus, seperti menetapkan keutamaan dan tamat masa tugas, mengendalikan kegagalan pelaksanaan tugas, dsb. Saya harap artikel ini dapat membantu anda memahami dan menggunakan Celery, Redis dan Django untuk melaksanakan pemprosesan tugas tak segerak.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pemprosesan tugas tak segerak menggunakan Celery, Redis dan Django. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!