Hiệu năng và tối ưu hóa
Mục lục
Hiệu năng và tối ưu hóa
Điều phối yêu cầu đồng thời có kiểm soát
Khi danh sách mã dài, vnstock_pipeline chia các tác vụ tải cho một số luồng chạy đồng thời thay vì một vòng lặp tuần tự, để một mã phản hồi chậm không làm nghẽn cả tiến trình. Số luồng được giới hạn, giữa các yêu cầu có khoảng nghỉ, và khi nguồn yêu cầu giảm tần suất, hệ thống tự chờ rồi mới thử lại. Mọi lượt gọi vẫn tính vào hạn mức của bạn: hạn mức và lượt quy đổi là đơn vị kỹ thuật để giữ tải ở mức hợp lý với nguồn, không phải dữ liệu bán theo đơn vị.
Khi bạn chạy lệnh sau:
python -m vnstock_pipeline.cli run ohlcv --group VN100 --mode dailyBộ điều phối chia 100 tác vụ này cho một số luồng chạy đồng thời dưới nền; với --mode daily, mỗi mã chỉ tải phần dữ liệu mới. Bạn nên chọn nhóm mã mình thật sự theo dõi, còn dữ liệu cũ đọc lại từ kho cục bộ.
Tự động ghi nhận và chạy bù khi lỗi
Trước đây, khi tải một danh sách mã dài, nếu một mã gần cuối gặp lỗi đứt kết nối mạng, người dùng thường phải chạy lại từ đầu. Hiện nay, hệ thống giải quyết triệt để vấn đề này:
- Cô lập rủi ro: Lỗi ở mã nào sẽ chỉ bị bỏ qua ở mã đó, hoàn toàn không làm gián đoạn các mã còn lại.
- Ghi nhật ký lỗi tự động: Các mã không tải được sẽ được ghi tên vào tệp
error_log.csvnằm trong thư mục dữ liệu của bạn. - Tiếp tục thông minh: Bạn chỉ cần thêm tham số
--retry-errorsvào lệnh chạy, hệ thống sẽ đọc danh sách lỗi và chỉ tải bù đúng những mã bị thiếu, không gửi lại yêu cầu cho những mã đã tải xong.
# Tải bù sau sự cố mạng, hoặc sau khi nguồn yêu cầu giảm tần suất (nên chờ một lúc rồi mới chạy lại)
python -m vnstock_pipeline.cli run ohlcv --retry-errorsTối ưu hóa bằng định dạng siêu nhẹ (Parquet)
Khi cần xử lý hàng chục ngàn dòng dữ liệu khớp lệnh trong phiên hằng ngày, định dạng CSV truyền thống tỏ ra quá nặng nề và chậm chạp.
Do đó, vnstock_pipeline sử dụng định dạng lưu trữ Parquet làm tiêu chuẩn mặc định:
- Tốc độ đọc/ghi nhanh: Parquet thường được đọc/ghi nhanh hơn đáng kể so với CSV, nhất là khi chỉ cần một vài cột.
- Tiết kiệm dung lượng ổ cứng: Parquet lưu trữ dữ liệu theo cột và được nén tự động. Tệp Parquet thường nhỏ hơn đáng kể so với tệp CSV tương đương.
Tự động hoá quản lý đường dẫn
Trong quá khứ, việc khai báo đường dẫn thư mục theo cách thủ công thường dẫn đến lỗi "không tìm thấy tệp" khi hệ thống được đưa lên máy chủ hoặc chạy qua các công cụ lập lịch tự động.
Phiên bản hiện tại tích hợp lớp cấu hình thông minh giúp tự động quét và định vị chính xác vị trí thư mục lưu trữ gốc. Dù bạn thực thi mã lệnh từ bất kỳ vị trí nào trên máy tính cá nhân hay máy chủ đám mây, hệ thống vẫn xác định đúng thư mục lưu trữ gốc theo cấu hình của bạn.