Rumah pembangunan bahagian belakang Tutorial Python Saderi, Redis dan Django digunakan bersama untuk meningkatkan kecekapan pemprosesan tugas tak segerak

Saderi, Redis dan Django digunakan bersama untuk meningkatkan kecekapan pemprosesan tugas tak segerak

Sep 28, 2023 pm 06:27 PM
redis celery django

Saderi, Redis dan Django digunakan bersama untuk meningkatkan kecekapan pemprosesan tugas tak segerak

Celery, Redis dan Django digunakan bersama untuk meningkatkan kecekapan pemprosesan tugas tak segerak

Pengenalan: Dalam proses membangunkan aplikasi web, kami sering menghadapi beberapa tugas yang memakan masa yang perlu diproses. Jika tugasan ini dilaksanakan secara langsung dalam proses pemprosesan permintaan, ia akan menyebabkan pengguna menunggu terlalu lama, yang amat tidak mesra kepada pengalaman pengguna. Untuk menyelesaikan masalah ini, kami boleh menggunakan Celery, Redis dan Django untuk memproses tugas yang memakan masa secara tidak segerak, meningkatkan prestasi sistem dan pengalaman pengguna.

  1. Pengenalan dan pemasangan Saderi
    Saderi ialah baris gilir tugas yang berfungsi berdasarkan pemesejan yang diedarkan dan juga menyokong penjadualan tugas. Memasang Celery boleh diselesaikan melalui arahan pip:

    1

    pip install celery

    Salin selepas log masuk
  2. Pengenalan dan pemasangan Redis
    Redis ialah pangkalan data dalam memori sumber terbuka yang menyokong pelbagai struktur data dan pelbagai senario aplikasi. Dalam senario kami, Redis digunakan terutamanya sebagai pelaksanaan storan bahagian belakang baris gilir tugas. Memasang Redis boleh diselesaikan dengan langkah berikut:
  3. Muat turun Redis dan nyahzipnya
  4. Masukkan direktori yang dinyahmampat dan gunakan arahan make untuk menyusun
  5. Gunakan arahan make install untuk memasang
  6. Konfigurasi Django
    Pertama, anda perlu tetapkan tetapan projek Django Tambah item konfigurasi Celery pada fail .py, seperti yang ditunjukkan di bawah:

    1

    2

    3

    4

    5

    6

    7

    8

    # settings.py

     

    # Celery配置

    CELERY_BROKER_URL = 'redis://localhost:6379/0'

    CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'

    CELERY_ACCEPT_CONTENT = ['json']

    CELERY_TASK_SERIALIZER = 'json'

    CELERY_RESULT_SERIALIZER = 'json'

    Salin selepas log masuk

    Dalam konfigurasi di atas, CELERY_BROKER_URL dan CELERY_RESULT_BACKEND tentukan alamat dan pelabuhan Redis, yang digunakan sebagai Backend tugas untuk baris gilir dan penyimpanan hasil. CELERY_BROKER_URLCELERY_RESULT_BACKEND指定了Redis的地址和端口,用来作为任务队列和结果存储的后端。

接下来,在项目的urls.py文件中添加Celery的配置,如下所示:

1

2

3

4

5

6

7

8

# urls.py

 

from django.urls import path

from .views import AsyncTaskView

 

urlpatterns = [

    path('async-task/', AsyncTaskView.as_view(), name='async_task'),

]

Salin selepas log masuk
  1. 创建任务函数
    在Django的app中创建tasks.py文件,并在其中定义异步任务的函数。下面是一个示例代码:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    # app/tasks.py

     

    from celery import shared_task

    import time

     

    @shared_task

    def process_task():

     # 模拟任务处理过程(等待5秒)

     time.sleep(5)

     return 'Task completed'

    Salin selepas log masuk

    在上述代码中,@shared_task装饰器用于将函数转换为Celery的任务函数。

  2. 视图实现
    在Django的views.py文件中定义一个视图类,用于接收请求并调用异步任务函数。下面是一个示例代码:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    # app/views.py

     

    from django.views import View

    from .tasks import process_task

    from django.http import HttpResponse

     

    class AsyncTaskView(View):

     def get(self, request):

         # 调用异步任务

         task = process_task.delay()

         return HttpResponse('Task started')

    Salin selepas log masuk
  3. 启动Celery服务
    使用以下命令来启动Celery的工作进程:

    1

    celery -A your_project_name worker --loglevel=info

    Salin selepas log masuk

    注意将your_project_name替换为你的Django项目名称。

  4. 测试
    在浏览器中访问http://localhost:8000/async-task/

Seterusnya, tambahkan konfigurasi Celery dalam fail urls.py projek seperti berikut:

rrreee
    🎜🎜Buat fungsi tugas🎜Buat fail tasks.py dalam apl Django , dan tentukan fungsi tugas tak segerak di dalamnya. Berikut ialah contoh kod: 🎜rrreee🎜Dalam kod di atas, penghias @shared_task digunakan untuk menukar fungsi kepada fungsi tugas Saderi. 🎜🎜🎜🎜Lihat pelaksanaan🎜Tentukan kelas paparan dalam fail views.py Django untuk menerima permintaan dan memanggil fungsi tugas tak segerak. Berikut ialah contoh kod: 🎜rrreee🎜🎜🎜Mulakan perkhidmatan Saderi 🎜Gunakan arahan berikut untuk memulakan proses pekerja Saderi: 🎜rrreee🎜Ganti nama_projek anda dengan nama projek Django anda. 🎜🎜🎜Ujian🎜Lawati http://localhost:8000/async-task/ dalam penyemak imbas Jika semuanya berjalan lancar, anda akan melihat hasil pulangan ialah 'Tugas dimulakan'. Pada masa ini, tugasan telah diproses secara tak segerak di latar belakang dan tidak akan menyekat pemprosesan permintaan pengguna. 🎜🎜🎜Kesimpulan: Dengan menggunakan gabungan Saderi, Redis dan Django, kami boleh memproses tugas yang memakan masa secara tidak segerak, meningkatkan prestasi sistem dan pengalaman pengguna. Barisan tugasan dan penjadualan tugas boleh diuruskan dengan mudah menggunakan Celery, manakala Redis sebagai storan bahagian belakang membolehkan penyimpanan data tugasan yang boleh dipercayai. Penyelesaian ini boleh digunakan secara meluas dalam pembangunan aplikasi Web, dan proses pelaksanaannya ditunjukkan melalui contoh kod tertentu. 🎜

Atas ialah kandungan terperinci Saderi, Redis dan Django digunakan bersama untuk meningkatkan kecekapan pemprosesan tugas tak segerak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Penyelesaian kepada ralat 0x80242008 semasa memasang Windows 11 10.0.22000.100 Penyelesaian kepada ralat 0x80242008 semasa memasang Windows 11 10.0.22000.100 May 08, 2024 pm 03:50 PM

Penyelesaian kepada ralat 0x80242008 semasa memasang Windows 11 10.0.22000.100

Bagaimana untuk menukar kata laluan dalam redis Bagaimana untuk menukar kata laluan dalam redis Apr 20, 2024 am 03:00 AM

Bagaimana untuk menukar kata laluan dalam redis

Menganalisis kesesakan fungsi PHP dan meningkatkan kecekapan pelaksanaan Menganalisis kesesakan fungsi PHP dan meningkatkan kecekapan pelaksanaan Apr 23, 2024 pm 03:42 PM

Menganalisis kesesakan fungsi PHP dan meningkatkan kecekapan pelaksanaan

Adakah redis cache memori? Adakah redis cache memori? Apr 20, 2024 am 05:26 AM

Adakah redis cache memori?

Strategi dan pengoptimuman caching API Golang Strategi dan pengoptimuman caching API Golang May 07, 2024 pm 02:12 PM

Strategi dan pengoptimuman caching API Golang

Adakah redis pangkalan data bukan hubungan? Adakah redis pangkalan data bukan hubungan? Apr 20, 2024 am 05:36 AM

Adakah redis pangkalan data bukan hubungan?

Mekanisme caching dan amalan aplikasi dalam pembangunan PHP Mekanisme caching dan amalan aplikasi dalam pembangunan PHP May 09, 2024 pm 01:30 PM

Mekanisme caching dan amalan aplikasi dalam pembangunan PHP

Yang manakah mempunyai prestasi yang lebih baik, erlang atau golang? Yang manakah mempunyai prestasi yang lebih baik, erlang atau golang? Apr 21, 2024 am 03:24 AM

Yang manakah mempunyai prestasi yang lebih baik, erlang atau golang?

See all articles