Rumah >pembangunan bahagian belakang >Tutorial Python >Manfaatkan teknologi Celery Redis Django untuk mencapai pemprosesan tugas tak segerak berskala

Manfaatkan teknologi Celery Redis Django untuk mencapai pemprosesan tugas tak segerak berskala

王林
王林asal
2023-09-26 18:19:441661semak imbas

利用Celery Redis Django技术实现可扩展的异步任务处理

Menggunakan teknologi Celery Redis Django untuk mencapai pemprosesan tugas tak segerak berskala

Pengenalan:
Dalam aplikasi web moden, pemprosesan tugas tak segerak telah menjadi keperluan penting. Memandangkan sesetengah tugas boleh memakan masa atau perlu dijalankan di latar belakang, menggunakan tugas tak segerak boleh meningkatkan prestasi dan pengalaman pengguna aplikasi anda. Untuk mencapai pemprosesan tugas tak segerak berskala, kami boleh menggabungkan teknologi Saderi, Redis dan Django, yang akan membolehkan aplikasi kami mempunyai keupayaan untuk menskala secara mendatar apabila menghadapi pemprosesan tugas berskala besar. Artikel ini akan menerangkan cara melaksanakan sistem pemprosesan tugas tak segerak berskala dengan menggunakan teknologi Celery, Redis dan Django serta menyediakan contoh kod khusus.

1. Pasang dan konfigurasikan Saderi, Redis dan Django

  1. Pasang Saderi:
    Pertama, kita perlu memasang perpustakaan Saderi. Pustaka Celery boleh dipasang dengan melaksanakan arahan berikut:
pip install celery
  1. Pasang Redis:
    Seterusnya, kami perlu memasang Redis sebagai broker mesej kami. Redis boleh dipasang dengan melaksanakan arahan berikut:
pip install redis
  1. Pasang Django:
    Kemudian, kita perlu memasang rangka kerja Django. Django boleh dipasang dengan melaksanakan arahan berikut:
pip install django
  1. Konfigurasikan Saderi:
    Dalam fail settings.py projek Django, tambahkan konfigurasi Saderi berikut:
CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
  1. Cipta contoh Saderi:
    daripada fail .py projek Django, tambah kod berikut:
from celery import Celery

app = Celery('your_app_name')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()

2. Tulis kod tugas tak segerak

  1. Buat fail tasks.py:
    Dalam direktori akar projek Django, cipta fail bernama tasks.py.
  2. Menulis tugas tak segerak:
    Dalam tasks.py, kita boleh mentakrifkan tugas tak segerak. Sebagai contoh, kami menulis tugas tak segerak mudah untuk menunjukkan proses memproses tugas tak segerak melalui Saderi:
from celery import shared_task
from time import sleep

@shared_task
def send_email():
    sleep(5)  # 休眠5秒来模拟一个耗时的任务
    # 在此处编写发送邮件的代码
    print("邮件发送成功!")

3. Mulakan Pekerja Saderi dan Pukul

  1. Mulakan Pekerja Saderi:
    Dalam baris arahan, navigasi ke direktori akar projek Django , dan laksanakan arahan berikut untuk memulakan Celery Worker:
celery -A your_app_name worker --loglevel=info
  1. Mulakan Celery Beat:
    Dalam baris arahan, navigasi ke direktori akar projek Django dan laksanakan arahan berikut untuk memulakan Celery Beat (untuk melaksanakan tugasan secara berkala) :
celery -A your_app_name beat --loglevel=info

4. Panggil tugas tak segerak dalam paparan Django

  1. Import tugas tak segerak dalam paparan Django:
    Di mana-mana tugas tak segerak perlu dipanggil, kami perlu mengimport tugas itu. Sebagai contoh, dalam fail views.py, anda boleh menambah pernyataan import berikut:
from your_app_name.tasks import send_email
  1. Panggil tugas tak segerak:
    Jika anda perlu memanggil tugas tak segerak, gunakan kaedah .delay() untuk memanggil tugas. Contohnya, dalam fungsi paparan Django, kami boleh melaksanakan kod berikut untuk memanggil tugas send_email:
def some_view(request):
    # 其他代码...
    send_email.delay()
    # 其他代码...

Melalui langkah di atas, kami telah melaksanakan sistem pemprosesan tugas tak segerak berskala berdasarkan Celery, Redis dan Django. Kami menggunakan Celery dan Redis sebagai broker mesej dan storan hasil, dan menggunakan Django untuk mengurus dan menjadualkan tugas tak segerak. Dengan cara ini, aplikasi kami boleh mengendalikan sejumlah besar tugas tak segerak dan mempunyai keupayaan untuk menskala secara mendatar.

Kesimpulan:
Menggunakan teknologi Saderi, Redis dan Django, kami boleh melaksanakan sistem pemprosesan tugas tak segerak berskala dengan mudah. Melalui konfigurasi dan penjadualan yang betul, aplikasi kami boleh mengendalikan sejumlah besar tugas tak segerak dengan cekap, dengan itu meningkatkan pengalaman pengguna dan prestasi aplikasi. Pada masa yang sama, kami boleh menggunakan alat yang boleh dipercayai seperti Celery dan Redis untuk menjadikan sistem kami stabil dan boleh dipercayai apabila menghadapi pemprosesan tugas berskala besar.

Pautan rujukan:

  1. https://docs.celeryproject.org/en/stable/index.html
  2. https://realpython.com/asynchronous-tasks-with-django-and-celery/

Atas ialah kandungan terperinci Manfaatkan teknologi Celery Redis Django untuk mencapai pemprosesan tugas tak segerak berskala. 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