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

WBOY
Lepaskan: 2023-09-27 10:15:36
asal
982 orang telah melayarinya

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
    Salin selepas log masuk
  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'
    Salin selepas log masuk

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

  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')
    Salin selepas log masuk

  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
    Salin selepas log masuk
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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!