Hiệu năng và tối ưu hóa
Cập nhật lần cuối:
Thảo luậnMục lục
Hiệu năng và tối ưu hóa
Kiến trúc xử lý song song
vnstock_pipeline tự động sử dụng kiến trúc xử lý song song ở cấp độ tác vụ khi số lượng mã chứng khoán yêu cầu lớn. Khác với cách dùng vòng lặp for thông thường khiến quá trình tải bị nghẽn tại một mã cụ thể, hệ thống phân chia các tiến trình nhập xuất (I/O) vào các luồng độc lập, giúp tải dữ liệu của rổ VN100 chỉ mất chưa đến vài giây.
Khi bạn chạy lệnh CLI:
python -m vnstock_pipeline.cli run ohlcv --group VN100 --mode dailyScheduler sẽ tự động chia 100 tác vụ này thành nhiều luồng chạy ngầm.
Cơ chế tự động chạy lại khi lỗi và lưu nhật ký
Trước đây, khi tải một tập hợp 1000 mã cổ phiếu, nếu mã thứ 999 bị đứt kết nối mạng, người dùng thường phải chạy lại từ đầu. Hiện nay:
- Quản lý rủi ro trên từng tiến trình: Lỗi ở mã nào sẽ chỉ cô lập mã đó, không làm gián đoạn toàn bộ chương trình.
- Xuất danh sách lỗi: Các mã không tải được sẽ bị ghi vào file
error_log.csvnằm trong thư mục cơ sở dữ liệu mà bạn chỉ định trong cấu hìnhpipeline.toml. - Tiếp tục tiến trình thông minh: Bạn chỉ cần kích hoạt cờ
--retry-errors, hệ thống sẽ đọc từ file log và chỉ tải lại đúng những mã bị thiếu, giúp tiết kiệm thời gian và băng thông.
# Phục hồi sau đứt cáp hoặc khi bị giới hạn tần suất gọi API
python -m vnstock_pipeline.cli run ohlcv --retry-errorsTối ưu hóa bằng định dạng Parquet
Để xử lý hàng chục ngàn dòng dữ liệu khớp lệnh (Trades) hằng ngày, CSV tỏ ra quá nặng và chậm chạp.
vnstock_pipeline tích hợp lưu trữ định dạng Parquet theo mặc định.
- Tốc độ tải dữ liệu: Sử dụng thư viện
pyarrow, tốc độ chuyển đổi Parquet sang Pandas DataFrame nhanh hơn CSV từ 10 đến 50 lần. - Tiết kiệm dung lượng: Parquet là định dạng lưu trữ dạng cột. Dung lượng của một bảng lưu bằng Parquet thông thường chỉ bằng khoảng 25% so với CSV gốc.
Tự động xử lý đường dẫn
Trong các phiên bản trước, việc dùng các lệnh os.path.join hoặc truyền đường dẫn tương đối thủ công thường gây lỗi không tìm thấy file nếu bạn kích hoạt script qua Cronjob.
Phiên bản hiện tại sử dụng thư viện pathlib và tính năng resolve_base_path() của hệ thống cấu hình giúp tự động tìm ra vị trí gốc dù bạn thực thi môi trường từ bất kỳ đâu, đảm bảo tỷ lệ chạy thành công cao trên máy chủ VPS.
Thảo luận