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

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

WBOY
WBOYasal
2023-09-27 10:15:36982semak imbas

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

  1. Celery ialah perpustakaan pemprosesan tugasan tak segerak berdasarkan penghantaran mesej yang diedarkan. Ia boleh membahagikan tugas kepada berbilang subtugas dan mengedarkannya kepada nod pekerja yang berbeza untuk pelaksanaan serentak. Saderi menyokong pelbagai kaedah penghantaran mesej, seperti RabbitMQ, Redis, dsb.
  2. Redis ialah pangkalan data storan pasangan nilai kunci berprestasi tinggi yang boleh digunakan untuk menyimpan keputusan perantaraan dan maklumat status tugas Saderi.
  3. Django ialah rangka kerja web Python lanjutan untuk membangunkan aplikasi web.

2. Pasang dan konfigurasikan Saderi, Redis dan Django

  1. Pasang Saderi dan Redis:

    pip install celery
    pip install redis
  2. Konfigurasi Saderi:
    Tambah konfigurasi berikut dalam fail projek settings.py Djangee:

    Redis di sini Berjalan secara tempatan pada port 6379.

  3. Buat aplikasi Django dan tugas tak segerak:

    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

  4. Menulis paparan Django:

    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):
     # 发送邮件的逻辑

  5. Buat templat Django:
  6. Buat fail templat send_email.html dalam direktori templat aplikasi Django untuk memaparkan hasil penghantaran e-mel.
  7. Mulakan pekerja Saderi:

    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')

  8. Uji tugas tak segerak:

    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

Ringkasan:

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!

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