Cara menggunakan Celery Redis Django untuk membangunkan pemproses tugas tak segerak berprestasi tinggi

王林
Lepaskan: 2023-09-26 08:41:00
asal
1207 orang telah melayarinya

如何利用Celery Redis Django开发高性能异步任务处理器

Cara menggunakan Celery Redis Django untuk membangunkan pemproses tugas tak segerak berprestasi tinggi

Pengenalan:
Dalam pembangunan web moden, pemprosesan tugas tak segerak menjadi semakin penting. Pemprosesan segerak tradisional sering membawa kepada penurunan prestasi tapak web kerana permintaan lain disekat semasa memproses tugas yang memakan masa. Penggunaan pemproses tugas tak segerak boleh menyelesaikan masalah ini dengan berkesan dan meningkatkan prestasi laman web.

Artikel ini akan memperkenalkan cara menggunakan Celery, Redis dan Django untuk membangunkan pemproses tugas tak segerak berprestasi tinggi, dan memberikan contoh kod khusus.

1. Pemasangan dan konfigurasi Saderi:

  1. Pasang Saderi: Gunakan arahan pemasangan pip untuk memasang perpustakaan Saderi.
  2. Konfigurasikan Saderi: Tambahkan konfigurasi berikut dalam fail tetapan projek Django:
# celery settings
CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
Salin selepas log masuk

Nota: CELERY_BROKER_URL dan CELERY_RESULT_BACKEND gunakan Redis sebagai hujung belakang untuk broker mesej dan storan hasil.

2. Pemasangan dan konfigurasi Redis:

  1. Memasang Redis: Mengikut persekitaran sistem anda sendiri, pilih kaedah pemasangan yang sesuai untuk memasang Redis.
  2. Konfigurasikan Redis: Tambahkan konfigurasi berikut pada fail tetapan projek Django:
# redis settings
REDIS_HOST = 'localhost'
REDIS_PORT = 6379
REDIS_DB = 0
Salin selepas log masuk

3. Tulis tugas tak segerak:

  1. Buat fail tasks.py dalam apl projek Django untuk menulis tugasan tak segerak. Berikut ialah contoh:
from celery import shared_task
from django.core.mail import send_mail

@shared_task
def send_email_task(subject, message, recipient_list):
    send_mail(subject, message, 'noreply@example.com', recipient_list)
Salin selepas log masuk
  1. Panggil tugas tak segerak dalam fungsi paparan atau di tempat lain:
from .tasks import send_email_task

def send_email_view(request):
    # 调用异步任务
    send_email_task.delay('Subject', 'Message', ['recipient@example.com'])
    return HttpResponse('Email sent asynchronously.')
Salin selepas log masuk

Keempat, mulakan Pekerja Saderi:

  1. Buat saderi skrip permulaan saderi untuk direktori root projek.py Mulakan Pekerja Saderi. Berikut ialah contoh:
import os
from celery import Celery
from django.conf import settings

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings')

app = Celery('project')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
Salin selepas log masuk
  1. Laksanakan arahan berikut untuk memulakan Pekerja Saderi:
celery -A project.celery worker --loglevel=info
Salin selepas log masuk

5. Pengujian dan penggunaan:

  1. Jalankan arahan berikut dalam direktori akar projek Django untuk memulakan projek Django pelayan:
python manage.py runserver
Salin selepas log masuk
  1. Dalam Akses URL yang sepadan dalam penyemak imbas untuk menguji pelaksanaan tugas tak segerak.

6. Ringkasan:
Dengan menggunakan Celery, Redis dan Django, kami boleh melaksanakan pemproses tugas tak segerak berprestasi tinggi dengan mudah. Apabila membangunkan aplikasi web, anda boleh menggunakan pemproses tugas tak segerak untuk mengendalikan tugas yang memakan masa, meningkatkan prestasi tapak web dan meningkatkan pengalaman pengguna.

Di atas ialah pengenalan dan contoh kod khusus tentang cara menggunakan Celery, Redis dan Django untuk membangunkan pemproses tugas tak segerak berprestasi tinggi. Saya harap artikel ini berguna kepada anda, terima kasih kerana membaca!

Atas ialah kandungan terperinci Cara menggunakan Celery Redis Django untuk membangunkan pemproses tugas tak segerak berprestasi tinggi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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!