Bagaimana untuk mengintegrasikan Celery dan Redis dalam Django untuk melaksanakan pemprosesan tugas tak segerak

王林
Lepaskan: 2023-09-28 17:40:52
asal
1002 orang telah melayarinya

Bagaimana untuk mengintegrasikan Celery dan Redis dalam Django untuk melaksanakan pemprosesan tugas tak segerak

Cara mengintegrasikan Celery dan Redis dalam Django untuk melaksanakan pemprosesan tugas tak segerak

Pengenalan:
Dalam aplikasi web, terdapat banyak tugas yang memakan masa, seperti menghantar e-mel, memproses imej, menjana laporan, dsb. Jika tugasan ini diproses secara serentak, ia akan menjejaskan pengalaman pengguna dengan serius, jadi sistem pemprosesan tugas tak segerak perlu digunakan.

Django ialah rangka kerja web Python yang popular, dan Celery ialah sistem baris gilir tugas teragih sumber terbuka yang menyediakan penyelesaian pemprosesan tugas tak segerak. Untuk melaksanakan pemprosesan tugas tak segerak, kami juga perlu menggunakan Redis sebagai broker mesej Celery.

Artikel ini akan memperkenalkan cara mengintegrasikan Celery dan Redis dalam Django untuk mencapai pemprosesan tugas tak segerak. Perkara berikut akan dibahagikan kepada empat bahagian untuk diterangkan: pemasangan dan konfigurasi, mencipta tugas, memanggil tugas dan memantau tugas. Konfigurasi pemasangan

di sini Konfigurasi menentukan penggunaan Redis sebagai broker mesej dan kedai hasil.

  1. Mulakan Pekerja Saderi

    Buat fail bernama celery.py dalam direktori akar projek Django dan tambah kandungan berikut:

    pip install celery redis
    Salin selepas log masuk

    Tujuan fail ini adalah untuk mencipta contoh Saderi dan memuatkan konfigurasi Django projek.

  2. Jalankan arahan berikut dalam terminal untuk memulakan Pekerja Saderi:

    # Celery配置
    CELERY_BROKER_URL = 'redis://localhost:6379/0'
    CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
    Salin selepas log masuk

    2. Buat tugasan

  3. Buat fail tasks.py
    Buat fail bernama tasks.py dalam direktori aplikasi Django, Dan tambah yang berikut:

    from celery import Celery
    import os
    
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings')
    
    app = Celery('project')
    app.config_from_object('django.conf:settings', namespace='CELERY')
    app.autodiscover_tasks()
    Salin selepas log masuk

    Di sini tugas yang dipanggil tambah ditakrifkan yang menerima dua parameter x dan y dan mengembalikan jumlahnya.

3. Panggil tugasan

Tugas saderi boleh dipanggil dalam fungsi paparan Django atau di tempat lain dengan cara berikut:

celery -A project worker --loglevel=info
Salin selepas log masuk

Di sini, kaedah kelewatan() dan parameter digunakan untuk memanggil tugas tambah, dan hasilnya ialah disimpan dalam pembolehubah hasil.
  1. 4. Tugas pemantauan

    Untuk memantau pelaksanaan tugas dalam Django, anda boleh menggunakan alat Bunga yang disediakan oleh Celery. Ia boleh dipasang dan dikonfigurasikan dengan mengikuti langkah-langkah:

    Pasang Bunga
  2. Pasang Bunga menggunakan arahan pip:
from celery import shared_task

@shared_task
def add(x, y):
 return x + y
Salin selepas log masuk


Mulakan Bunga

Mulakan Bunga dengan menjalankan arahan berikut di terminal:

from app.tasks import add

result = add.delay(1, 2)
Salin selepas log masuk

Lawati Bunga

dalam pelayar Lawati http://localhost:5555 untuk memasuki antara muka pemantauan Flower, di mana anda boleh memantau pelaksanaan tugas, melihat butiran tugas, dsb.
  1. Ringkasan:
    Melalui langkah di atas, kami boleh menyepadukan Celery dan Redis dalam Django untuk melaksanakan pemprosesan tugas tak segerak. Apabila membangunkan aplikasi web, pemprosesan tugas tak segerak boleh meningkatkan pengalaman pengguna dan prestasi sistem, jadi ia mempunyai nilai aplikasi yang luas dalam projek sebenar. Pada masa yang sama, dengan memantau pelaksanaan tugas, kami boleh menemui dan menyelesaikan masalah dengan segera dalam pemprosesan tugas untuk memastikan kestabilan dan kebolehpercayaan sistem.

Atas ialah kandungan terperinci Bagaimana untuk mengintegrasikan Celery dan Redis dalam Django untuk melaksanakan pemprosesan tugas tak segerak. 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