Closed LienNTB closed 1 year ago
Celery là một hệ thống task queue/job queue bất đồng bộ mã nguồn mở được xây dựng bằng Python. Nó cho phép chạy các task trong nền một cách bất đồng bộ. Celery được thiết kế để hoạt động với các kiến trúc phân tán và cho phép bạn phân phối các task trên nhiều node worker. Nó hỗ trợ nhiều message broker như RabbitMQ, Redis và Amazon SQS, được sử dụng để giao tiếp giữa client và các node worker. Để sử dụng Celery trong dự án Python cần trước tiên cài đặt nó bằng trình quản lý gói như pip. Sau khi cài đặt, có thể định nghĩa các task bằng decorator @task và lên lịch chúng để thực thi bằng API của Celery. Dưới đây là một ví dụ đơn giản về một task Celery:
from celery import Celery
app = Celery('tasks', broker='pyamqp://guest@localhost//')
@app.task
def add(x, y):
return x + y
Trong ví dụ này, chúng ta định nghĩa một Celery app với một broker URL trỏ đến một máy chủ RabbitMQ đang chạy trên localhost. Sau đó, chúng ta định nghĩa một task có tên là "add" lấy hai đối số và trả về tổng của chúng. Để lên lịch cho task này để thực thi, bạn có thể gọi nó bất đồng bộ bằng cách sử dụng phương thức apply_async:
result = add.apply_async(args=[1, 2])
Điều này sẽ thêm hai số 1 và 2 bất đồng bộ và trả về một đối tượng Celery Result mà bạn có thể sử dụng để theo dõi tiến độ của task và lấy kết quả của nó.
Luồng chạy của Celery bao gồm các thành phần chính sau:
Để sử dụng Celery, bạn cần cấu hình các thành phần trên và định nghĩa các worker để thực hiện các tác vụ. Sau đó, bạn có thể sử dụng producer để tạo ra các message và gửi tới broker để xử lý. Các worker sẽ lấy các message từ broker và thực hiện các công việc tương ứng. Kết quả của các tác vụ sẽ được lưu trữ trong result backend để sử dụng sau này. Tổng thể, Celery là một công cụ mạnh mẽ để chạy các task tốn thời gian bất đồng bộ trong Python và được sử dụng rộng rãi trong các ứng dụng web và hệ thống phân tán.
celery task edit_video
celery task generate_timeline_thumbnails
celery task generate_preview_thumbnail
List all projects
Create a project
Retrieve project details
Delete project
Duplicate project
Edit video
Upload custom preview thumbnail
Get preview/timeline thumbnail file
Create thumbnail for preview or thumbnails for timeline
Get video stream
vẽ activity diagram cho các chức năng:
task1
[x] Tìm hiểu celery là gì và luồng hoạt động của nó
task2: Vẽ activity diagram của các hàm liên quan đến xử lý nền dùng celery
[x] celery task edit_video
[x] celery task generate_timeline_thumbnails
[x] generate_preview_thumbnail
task3
[x] List all projects
[x] Create a project
task4
[x] Retrieve project details
[x] Delete project
task5
[x] Duplicate project
[x] Edit video
task6
[x] Upload custom preview thumbnail
[x] Get preview/timeline thumbnail file
task7
[x] Create thumbnail for preview or thumbnails for timeline
[x] Get video stream