Aplikasi teknologi Celery Redis Django dalam pemprosesan tugas tak segerak
Dengan pembangunan aplikasi web, memproses sejumlah besar tugas tak segerak telah menjadi semakin biasa. Tugas ini termasuk menghantar e-mel, memproses imej, menjana laporan, dsb. Untuk meningkatkan prestasi dan kebolehskalaan sistem, pembangun telah menggunakan pelbagai teknik pemprosesan tugas tak segerak. Antaranya, Celery, Redis dan Django adalah salah satu penyelesaian yang biasa digunakan.
Saderi ialah baris gilir tugas yang diedarkan yang melaksanakan pelaksanaan tugasan tak segerak melalui penghantaran mesej. Ia menyediakan API yang mudah tetapi berkuasa yang boleh disepadukan ke dalam aplikasi Django. Redis ialah sistem storan nilai kunci berprestasi tinggi yang boleh digunakan sebagai broker mesej dan kedai hasil Celery. Django ialah rangka kerja web Python popular yang menyediakan pangkalan data dan lapisan model yang berkuasa, serta alatan dan pemalam yang kaya.
Dalam artikel ini, kami akan membincangkan cara menggunakan Celery dan Redis dalam aplikasi Django untuk mengendalikan tugas tak segerak dan memberikan beberapa contoh kod konkrit.
Pertama, kita perlu memasang Celery, Redis dan Django serta pakej kebergantungan mereka. Ia boleh dipasang menggunakan arahan pip:
pip install celery redis django
Seterusnya, kita perlu membuat beberapa konfigurasi dalam fail settings.py aplikasi Django. Pertama, kita perlu menetapkan Broker dan Backend Celery kepada Redis. Tambahkan konfigurasi berikut dalam fail settings.py:
# Celery配置 CELERY_BROKER_URL = 'redis://localhost:6379/0' CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
Kemudian, kita perlu mencipta fail bernama tasks.py
dalam direktori utama Django. Dalam fail ini kami akan mentakrifkan tugas tak segerak. Berikut ialah contoh mudah: tasks.py
的文件。在这个文件中,我们将定义异步任务。以下是一个简单的示例:
from celery import shared_task @shared_task def send_email(to, subject, message): # 发送电子邮件的代码 # ... pass
接下来,我们需要在Django的视图函数(或类视图)中调用异步任务。以下是一个示例:
from .tasks import send_email def my_view(request): # 当接收到HTTP请求时,调用异步任务 send_email.delay("to@example.com", "Hello", "This is a test email.") return HttpResponse("Email has been sent!")
在这个例子中,我们调用了名为send_email
的异步任务,并传递了接收人的电子邮件地址、主题和消息。使用.delay()
方法,任务将会在后台异步执行,而不会阻塞当前的HTTP请求。
最后,我们需要启动Celery的工作进程来处理异步任务。在命令行中执行以下命令:
celery -A your_project_name worker --loglevel=info
在这个命令中,your_project_name
rrreee
rrreee
Dalam contoh ini, kami memanggil tugas tak segerak yang dipanggilsend_email
dan menghantar alamat e-mel, subjek dan mesej penerima. Menggunakan kaedah .delay()
, tugasan akan dilaksanakan secara tidak segerak di latar belakang tanpa menyekat permintaan HTTP semasa. Akhir sekali, kita perlu memulakan proses pekerja Celery untuk mengendalikan tugas tak segerak. Jalankan arahan berikut pada baris arahan: rrreee
Dalam arahan ini,your_project_name
ialah nama projek Django anda. 🎜🎜Apabila mana-mana pengguna yang menerima permintaan HTTP memanggil tugas tak segerak, proses pekerja Celery akan menerima tugas daripada Redis dan melaksanakannya. Ia juga menyimpan hasil tugas dalam Redis untuk membuat pertanyaan apabila diperlukan. 🎜🎜Ringkasnya, pengenalan teknologi Celery Redis Django boleh membantu kami mengoptimumkan prestasi dan kebolehskalaan aplikasi web, terutamanya apabila memproses sejumlah besar tugas tak segerak. Dalam artikel ini, kami mempelajari cara memasang dan mengkonfigurasi Celery, Redis dan Django, serta cara mentakrif dan memanggil tugas tak segerak. Dengan menggunakan teknologi ini secara rasional, kami boleh mengurus dan memproses tugas tak segerak dengan lebih baik dan meningkatkan kecekapan aplikasi web. 🎜🎜Di atas adalah pengenalan ringkas kepada aplikasi teknologi Celery Redis Django dalam pemprosesan tugas tak segerak Saya harap ia akan membantu anda. Jika anda mempunyai sebarang soalan, sila berasa bebas untuk bertanya. 🎜Atas ialah kandungan terperinci Aplikasi teknologi Celery Redis Django dalam pemprosesan tugas tak segerak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!