Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan baris gilir tugas tak segerak menggunakan Celery, Redis dan Django

Bagaimana untuk melaksanakan baris gilir tugas tak segerak menggunakan Celery, Redis dan Django

WBOY
WBOYasal
2023-09-27 23:18:221231semak imbas

Bagaimana untuk melaksanakan baris gilir tugas tak segerak menggunakan Celery, Redis dan Django

Cara melaksanakan baris gilir tugas tak segerak menggunakan Celery, Redis dan Django

Pengenalan:
Dalam pembangunan web, kita selalunya perlu mengendalikan beberapa tugas jangka panjang, seperti menghantar e-mel, menjana laporan, memproses sejumlah besar data, dll. Jika tugasan ini dikendalikan secara terus dalam fungsi paparan, masa respons permintaan akan menjadi terlalu lama dan pengalaman pengguna akan menjadi lemah. Untuk meningkatkan prestasi dan kelajuan tindak balas sistem, kami boleh menggunakan baris gilir tugas tak segerak untuk mengendalikan tugasan yang memakan masa ini. Celery ialah rangka kerja baris gilir tugas tak segerak yang digunakan secara meluas untuk Python, dan Redis ialah perisian tengah mesej lalainya. Artikel ini akan memperkenalkan cara menggunakan Celery, Redis dan Django untuk melaksanakan baris gilir tugas tak segerak dan memberikan contoh kod khusus.

Langkah 1: Pasang Celery, Redis dan Django
Kita mesti memasang Celery, Redis dan Django dahulu, dan membuat konfigurasi yang berkaitan dalam fail konfigurasi Django.

  1. Pasang Celery: Jalankan arahan berikut dalam baris arahan untuk memasang Celery:
$ pip install Celery
  1. Pasang Redis: Celery menggunakan Redis sebagai middleware mesej secara lalai, kita perlu memasang Redis dan pastikan pelayan Redis sedang berjalan.
  2. Konfigurasikan Django: Tambahkan konfigurasi berikut pada fail konfigurasi Django (settings.py):
# 使用Redis作为消息中间件
CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'

Langkah 2: Buat tugasan Saderi
Seterusnya, kita perlu mencipta tugasan Saderi dan menentukan fungsi tugasan yang sepadan. Sebagai contoh, mari buat tugasan untuk menghantar e-mel.

  1. Buat fail bernama tasks.py dalam direktori projek Django dan tambah kod berikut:
from celery import shared_task
from django.core.mail import send_mail

@shared_task
def send_email_task(subject, message, from_email, recipient_list):
    send_mail(subject, message, from_email, recipient_list)
  1. Panggil tugasan Saderi dalam fungsi paparan Django:
from .tasks import send_email_task

def send_email_view(request):
    # 获取邮件的相关参数
    subject = 'Test Email'
    message = 'This is a test email.'
    from_email = 'sender@example.com'
    recipient_list = ['recipient@example.com']
    
    # 调用Celery任务
    send_email_task.delay(subject, message, from_email, recipient_list)
    
    return HttpResponse('Email sent!')

Langkah 3: Mulakan saderi
seni bina yang diedarkan, di mana berbilang pekerja bertanggungjawab untuk memproses tugas. Kita perlu memulakan pekerja Saderi dalam baris arahan untuk memproses tugasan dalam baris gilir tugas.

Jalankan arahan berikut untuk memulakan pekerja:

$ celery -A your_project_name worker -l info

Perhatikan, gantikan "nama_projek_anda" dengan nama projek Django anda.

Langkah 4: Jalankan pelayan Django
Sebelum memulakan pekerja Saderi, kita perlu menjalankan pelayan Django. Jalankan arahan berikut dalam direktori akar projek:

$ python manage.py runserver

Kini anda boleh mengakses fungsi paparan yang sepadan dalam penyemak imbas dan memerhati log Celery untuk melihat pelaksanaan tugas.

Ringkasan:
Dengan menggunakan Celery, Redis dan Django, kami boleh melaksanakan baris gilir tugas tak segerak dengan mudah. Dengan meletakkan tugas yang memakan masa ke dalam baris gilir tugas, kami boleh meningkatkan prestasi dan kelajuan tindak balas sistem dengan sangat baik dan meningkatkan pengalaman pengguna. Pada masa yang sama, seni bina yang diedarkan Celery membolehkan kami mengembangkan keupayaan pemprosesan sistem secara fleksibel. Saya harap artikel ini akan membantu anda memahami cara melaksanakan baris gilir tugas tak segerak menggunakan Celery, Redis dan Django.

Pautan rujukan:

  • Dokumentasi rasmi saderi: https://docs.celeryproject.org/en/stable/index.html
  • Django dokumentasi rasmi: https://docs.djangoproject.com/

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan baris gilir tugas tak segerak menggunakan Celery, Redis dan Django. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn