Vnstock Logo

Hiệu năng và tối ưu hóa

Mở rộng

Mục lục

Tài liệu bản cũ: vnstock_pipeline v2.3.2

Bản mặc định hiện là vnstock_pipeline v3.1.1, gộp bản Cộng đồng và bản Mở rộng vào một thư viện. Trang này giữ lại cho máy còn cài vnstock_pipeline v2.3.2: mã viết theo trang này vẫn chạy với bản đó. Đã cài bản mới thì đọc trang tương ứng của v3.1.1.

Máy đang cài bản nào: chạy python -c "import vnstock; print(vnstock.__version__)", ra số bắt đầu bằng 5. là thế hệ 5.

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. Việc pipeline làm vẫn tính vào hạn mức chung của tài khoản, cùng quỹ với các thư viện khác: hạn mức 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:

Shell
python -m vnstock_pipeline.cli run ohlcv --group VN100 --mode daily

Bộ đ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ộ.

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 xử lý như sau:

  1. Cô lập rủi ro: Lỗi ở mã nào sẽ chỉ bị bỏ qua ở mã đó, không làm gián đoạn các mã còn lại.
  2. Ghi nhật ký lỗi: Các mã không tải được sẽ được ghi tên vào tệp error_log.csv nằm trong thư mục dữ liệu của bạn.
  3. Tiếp tục thông minh: Bạn chỉ cần thêm tham số --retry-errors và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.
Shell
# 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-errors

Tố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:

  1. 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.
  2. Tiết kiệm dung lượng ổ cứng: Parquet lưu trữ dữ liệu theo cột và áp dụng thuật toán nén thông minh. Tệp Parquet thường nhỏ hơn đáng kể so với tệp CSV tương đương.

Quản lý đường dẫn tập trung

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 định kỳ.

Phiên bản hiện tại tích hợp lớp cấu hình thông minh giúp đị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.