Rumah > Artikel > pembangunan bahagian belakang > Laksanakan pemprosesan tugas tak segerak teragih: menggunakan teknologi 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.
Pertama, kita perlu memasang perpustakaan Celery, Redis dan Django. Gunakan arahan berikut untuk memasangnya:
pip install celery redis 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.
# tasks.py from celery import shared_task @shared_task def process_task(data): # 处理任务的逻辑 # ... return resultDalam 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
注册为一个可异步执行的任务。在这个函数中,我们可以添加任何需要异步处理的逻辑,并返回结果。在命令行中,使用以下命令启动Celery Worker:
celery -A your_project_name worker --loglevel=info
这里的your_project_name
是你的Django项目的名称。
在Django视图或任何其他地方,通过以下方式来触发异步任务:
from .tasks import process_task result = process_task.delay(data)
在这个示例中,我们使用.delay()
方法来触发异步任务的执行,并将任务的结果存储在result
Mulakan Pekerja Saderi
rreee #🎜 🎜#Di sini
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!