Rumah >pembangunan bahagian belakang >Tutorial Python >Amalan terbaik untuk pemprosesan tugas tak segerak berdasarkan Celery Redis Django
Amalan terbaik untuk pemprosesan tugas tak segerak berdasarkan Celery Redis Django
Pengenalan:
Dalam pembangunan web, kadangkala anda akan menemui melaksanakan beberapa tugas yang memakan masa, seperti menghantar e-mel, menjana laporan, dsb. Jika anda melaksanakan tugas ini secara langsung dalam permintaan web, ia akan merendahkan pengalaman pengguna dan juga menyebabkan sistem ranap. Untuk menyelesaikan masalah ini, anda boleh menggunakan gabungan Celery, Redis dan Django untuk melaksanakan pemprosesan tugas tak segerak. Artikel ini akan memperkenalkan cara menggunakan gabungan Celery Redis dan Django untuk mencapai pemprosesan tugas tak segerak yang optimum.
1.1 Pasang Saderi: Gunakan pip untuk memasang Saderi.
pip install celery
1.2 Konfigurasikan Redis: Anda perlu memasang dan mengkonfigurasi Redis sebagai perisian tengah mesej.
1.3. Konfigurasikan Django: Pastikan anda menggunakan Celery dalam projek Django anda.
2.1 Cipta contoh Saderi: Buat fail celery.py
dalam direktori akar projek Django untuk mengkonfigurasi dan mencipta contoh Saderi. celery.py
文件,用于配置和创建Celery实例。
from __future__ import absolute_import import os from celery import Celery from django.conf import settings os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project.settings') app = Celery('your_project') app.config_from_object('django.conf:settings', namespace='CELERY') app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
2.2. 创建异步任务:在Django项目的某个应用中创建一个tasks.py
文件,用于定义异步任务。
from celery import shared_task @shared_task def send_email(to, subject, message): # 实现发送邮件的代码
delay()
方法来异步执行任务。3.1. 导入任务:
from myapp.tasks import send_email
3.2. 调度任务:
send_email.delay('example@example.com', 'Hello', 'Welcome to our website!')
4.1. 启动Worker:在终端窗口中,使用以下命令启动Celery Worker。
celery -A your_project worker -l info
4.2. 启动Beat:如果需要定时调度任务,可以使用以下命令启动Celery Beat。
celery -A your_project beat -l info
4.3. 监控任务:可以使用Flower来监控任务的执行情况。
4.4. 配置Result Backend:在celery.py
app.conf.update( CELERY_RESULT_BACKEND='djcelery.backends.database:DatabaseBackend', )2.2 Cipta tugas tak segerak: Cipta fail
tasks.py
dalam aplikasi projek Django untuk mentakrifkan tugas tak segerak. delay()
Celery Lakukan tugasan secara tidak segerak. 3.1. Tugas import:
rrreee#🎜🎜#3.2 Tugasan jadual: #🎜🎜#rrreeecelery.py
untuk mengkonfigurasi kaedah pemulangan hasil tugasan. #🎜🎜#rrreee#🎜🎜##🎜🎜#Kesimpulan#🎜🎜# Dengan menggunakan gabungan Celery Redis dan Django, kami boleh mencapai pemprosesan tugas tak segerak yang cekap. Menggunakan Celery sebagai penjadual tugas dan Redis sebagai perisian tengah mesej boleh meningkatkan prestasi dan kestabilan sistem. Pada masa yang sama, melalui alat pemantauan, kami boleh melihat pelaksanaan tugas dalam masa nyata untuk memudahkan penyelesaian masalah dan penyelesaian masalah. Perlu diingat bahawa apabila menggunakan Saderi, anda perlu memberi perhatian kepada reka bentuk dan kualiti kod tugas untuk mengelakkan masalah yang berpotensi dan kesesakan prestasi. #🎜🎜##🎜🎜##🎜🎜#Di atas ialah pengenalan dan contoh kod tentang amalan terbaik pemprosesan tugas tak segerak berdasarkan Celery Redis Django. Saya harap ia akan membantu semua orang dalam mengendalikan tugas tak segerak dalam pembangunan web! #🎜🎜#Atas ialah kandungan terperinci Amalan terbaik untuk pemprosesan tugas tak segerak berdasarkan Celery Redis Django. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!