Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Laksanakan pemprosesan tugas tak segerak teragih: menggunakan teknologi Celery Redis Django

Laksanakan pemprosesan tugas tak segerak teragih: menggunakan teknologi Celery Redis Django

WBOY
WBOYasal
2023-09-28 19:52:591285semak imbas

实现分布式异步任务处理:利用Celery Redis Django技术

Laksanakan pemprosesan tugas tak segerak teragih: menggunakan teknologi Saderi, Redis, Django

Untuk aplikasi web, proses beberapa tugasan yang memakan masa. selalunya cabaran. Jika tugasan ini dilakukan secara langsung semasa pemprosesan permintaan, ia akan menyebabkan kelewatan respons atau pun tamat masa. Untuk menyelesaikan masalah ini, kami boleh menggunakan pemprosesan tugas tak segerak teragih untuk memisahkan tugasan yang memakan masa ini daripada pemprosesan permintaan.

Artikel ini akan memperkenalkan cara menggunakan teknologi Saderi, Redis dan Django untuk melaksanakan pemprosesan tugas tak segerak teragih. Celery ialah rangka kerja baris gilir tugas yang diedarkan Python, Redis ialah pangkalan data nilai kunci berprestasi tinggi, dan Django ialah rangka kerja web Python yang popular.

  1. Pasang perpustakaan yang diperlukan

Pertama, kita perlu memasang perpustakaan Celery, Redis dan Django. Gunakan arahan berikut untuk memasangnya:

pip install celery redis django
  1. Konfigurasikan Projek Django

Dalam fail settings.py projek Django, tambah yang berikut konfigurasi:# 🎜🎜#

# settings.py

# Celery配置
CELERY_BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'

Di sini kami mengkonfigurasi kedua-dua broker mesej Celery dan bahagian belakang hasil sebagai Redis.

    Cipta tugas
Dalam projek Django, cipta fail tasks.py untuk mentakrifkan tugas tak segerak kami. Berikut ialah contoh:

# tasks.py

from celery import shared_task

@shared_task
def process_task(data):
    # 处理任务的逻辑
    # ...

    return result

Dalam contoh ini, kami menggunakan penghias @shared_task untuk mendaftarkan fungsi process_task sebagai salah satu yang boleh dilaksanakan secara tidak segerak Tugasan. Dalam fungsi ini, kita boleh menambah sebarang logik yang memerlukan pemprosesan tak segerak dan mengembalikan hasilnya.

    @shared_task装饰器将函数process_task注册为一个可异步执行的任务。在这个函数中,我们可以添加任何需要异步处理的逻辑,并返回结果。
    1. 启动Celery Worker

    在命令行中,使用以下命令启动Celery Worker:

    celery -A your_project_name worker --loglevel=info

    这里的your_project_name是你的Django项目的名称。

    1. 触发异步任务

    在Django视图或任何其他地方,通过以下方式来触发异步任务:

    from .tasks import process_task
    
    result = process_task.delay(data)

    在这个示例中,我们使用.delay()方法来触发异步任务的执行,并将任务的结果存储在resultMulakan Pekerja Saderi

    Dalam baris arahan, gunakan arahan berikut untuk memulakan Pekerja Saderi:

    rreee #🎜 🎜#Di sini nama_projek anda ialah nama projek Django anda.

      Cetus tugas tak segerak

      #🎜🎜##🎜🎜#Dalam paparan Django atau di tempat lain, cetuskan tugas tak segerak oleh: #🎜🎜 # rrreee#🎜🎜#Dalam contoh ini, kami menggunakan kaedah .delay() untuk mencetuskan pelaksanaan tugas tak segerak dan menyimpan hasil tugasan dalam pembolehubah result . Anda boleh memutuskan sama ada untuk memproses hasil tugasan berdasarkan keperluan sebenar. #🎜🎜##🎜🎜#Setakat ini, kami telah berjaya melaksanakan pemprosesan tugas tak segerak teragih. Saderi bertanggungjawab untuk menghantar tugas ke baris gilir mesej Redis, dan Pekerja melaksanakan tugas ini secara tidak segerak. Dengan cara ini, kami boleh mengasingkan tugas yang memakan masa daripada proses pemprosesan permintaan dan meningkatkan kelajuan tindak balas dan prestasi aplikasi web. #🎜🎜##🎜🎜#Dalam aplikasi sebenar, anda juga boleh melakukan lebih banyak konfigurasi pada Celery, seperti menetapkan keutamaan tugas, menetapkan had masa tugas, melaraskan bilangan mata wang, dsb. Saderi juga menyokong mod kluster dan penggunaan berbilang Pekerja, serta ciri lanjutan seperti memantau status tugas dan keputusan. #🎜🎜##🎜🎜# Saya harap artikel ini dapat membantu anda apabila melaksanakan pemprosesan tugas tak segerak teragih! #🎜🎜#

Atas ialah kandungan terperinci Laksanakan pemprosesan tugas tak segerak teragih: menggunakan teknologi Celery Redis Django. 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