Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pengalaman praktikal: Mengintegrasikan Celery dan Redis dalam Django untuk melaksanakan tugas tak segerak

Pengalaman praktikal: Mengintegrasikan Celery dan Redis dalam Django untuk melaksanakan tugas tak segerak

WBOY
WBOYasal
2023-09-26 16:33:371522semak imbas

Pengalaman praktikal: Mengintegrasikan Celery dan Redis dalam Django untuk melaksanakan tugas tak segerak

Pengalaman praktikal: Mengintegrasikan Celery dan Redis dalam Django untuk melaksanakan tugas tak segerak

Pengenalan:
Memandangkan kerumitan aplikasi web terus meningkat, banyak operasi memerlukan banyak masa dan sumber. Untuk meningkatkan pengalaman pengguna dan kecekapan sistem, pembangun selalunya perlu menukar beberapa operasi yang memakan masa kepada tugas tak segerak untuk dilaksanakan. Dalam Django, kami boleh melaksanakan tugas tak segerak dengan menyepadukan Celery dan Redis. Artikel ini akan memperkenalkan anda cara mengintegrasikan Celery dan Redis dalam Django, dengan contoh kod praktikal.

  1. Pasang dan konfigurasikan Celery dan Redis:
    Pertama, pastikan anda telah memasang Celery dan Redis. Anda boleh memasang Celery menggunakan pip seperti berikut:
pip install celery

Kemudian, untuk memasang Redis, anda boleh menggunakan arahan berikut:

sudo apt-get install redis-server

Selepas pemasangan selesai, kita perlu mengkonfigurasi projek Django supaya ia tahu bahawa kita akan menjadi menggunakan Saderi dan Redis. Dalam fail settings.py projek, tambahkan kod berikut:

# CELERY SETTINGS
CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'

Di sini kami nyatakan alamat setempat dan pelabuhan Redis. Pastikan Redis anda berjalan dan mendengar pada port yang ditentukan.

  1. Buat tugasan Saderi:
    Dalam direktori akar projek Django anda, buat fail bernama tasks.py. Dalam fail ini, tentukan tugasan Saderi anda. Berikut ialah kod sampel:
from celery import Celery

app = Celery('myapp', broker='redis://localhost:6379/0')

@app.task
def add(x, y):
    return x + y

Dalam contoh ini, kami mencipta aplikasi Saderi dan mentakrifkan tugas bernama add. Tugas tambah menerima dua parameter x dan y dan mengembalikan jumlahnya.

  1. Panggil Tugasan Saderi:
    Sekarang kami telah menentukan tugasan Saderi, langkah seterusnya ialah memanggilnya dalam paparan Django. Katakan anda mempunyai fungsi pandangan dalam fail views.py anda yang perlu melakukan operasi yang memakan masa. Anda boleh memanggil tugasan Saderi seperti berikut:
from myapp.tasks import add

def my_view(request):
    x = 10
    y = 20
    add.delay(x, y)
    return HttpResponse("Task added to the queue.")

Dalam contoh ini, kami mengimport tugas tambah yang ditakrifkan sebelum ini dan memanggilnya dalam fungsi paparan. Kami menggunakan kaedah delay() untuk menambah tugasan pada baris gilir Saderi dan segera mengembalikan HttpResponse kepada pengguna. Dengan cara ini, pengguna tidak akan disekat semasa melakukan operasi yang memakan masa.

  1. Mulakan pekerja Saderi:
    Untuk melaksanakan tugasan Saderi, kita perlu memulakan pekerja Saderi. Dalam direktori akar projek anda, buka tetingkap terminal dan jalankan arahan berikut:
celery -A myapp worker -l info

Ini akan memulakan pekerja Saderi dan mula memproses tugas dalam baris gilir. Anda boleh menetapkan tahap log dengan parameter -l.

  1. Pantau pelaksanaan tugas:
    Anda boleh menggunakan Bunga, alat utiliti, untuk memantau menjalankan tugas Saderi. Mula-mula, pastikan anda telah memasang Flower:
pip install flower

Setelah pemasangan selesai, buka tetingkap terminal baharu dan jalankan arahan berikut:

flower -A myapp --port=5555

Ini akan memulakan pelayan Flower dan mendengar pada port 5555. Anda boleh melawat localhost:5555 dalam penyemak imbas anda untuk melihat maklumat seperti tugasan yang sedang dijalankan dan status tugasan.

Kesimpulan:
Dengan menyepadukan Celery dan Redis, kami boleh mencapai pemprosesan tugas tak segerak yang cekap dalam Django. Artikel ini merangkumi langkah asas untuk mengkonfigurasi dan menggunakan Celery dalam projek Django, dan menyediakan contoh kod praktikal. Saya harap artikel ini dapat membantu anda mencapai pemprosesan tugas tak segerak yang lebih cekap dalam pembangunan.

Atas ialah kandungan terperinci Pengalaman praktikal: Mengintegrasikan Celery dan Redis dalam Django untuk melaksanakan tugas tak segerak. 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