Xử lý các phần phụ thuộc


Có hai cách để chỉ định các phần phụ thuộc cho Cloud Functions được viết bằng Python: sử dụng tệp requirements.txt của trình quản lý gói pip hoặc đóng gói các phần phụ thuộc cục bộ cùng với hàm của bạn.

Không hỗ trợ chỉ định phần phụ thuộc bằng tiêu chuẩn Pipfile/Pipfile.lock. Dự án của bạn không được chứa các tệp này.

Chỉ định các phần phụ thuộc bằng pip

Các phần phụ thuộc trong Python được quản lý bằng pip và thể hiện trong một tệp siêu dữ liệu có tên là requirements.txt. Tệp này phải nằm trong cùng thư mục với tệp main.py chứa mã hàm của bạn.

Khi bạn triển khai hoặc triển khai lại hàm, Cloud Functions sẽ dùng pip để tải xuống và cài đặt phiên bản mới nhất của các phần phụ thuộc như được khai báo trong tệp requirements.txt. Tệp requirements.txt chứa một dòng cho mỗi gói. Mỗi dòng chứa tên gói và phiên bản được yêu cầu (không bắt buộc). Để biết thêm chi tiết, hãy xem requirements.txt.

Để ngăn bản dựng của bạn bị ảnh hưởng bởi các thay đổi về phiên bản phần phụ thuộc, hãy cân nhắc việc ghim các gói phần phụ thuộc vào một phiên bản cụ thể.

Sau đây là một tệp requirements.txt mẫu:

functions-framework
requests==2.20.0
numpy

Functions Framework là một phần phụ thuộc bắt buộc đối với tất cả các hàm. Mặc dù Cloud Functions sẽ thay bạn cài đặt khi hàm được tạo, nhưng bạn nên đưa nó vào làm một phần phụ thuộc rõ ràng để cho rõ ràng.

Nếu hàm của bạn dựa vào các phần phụ thuộc riêng tư, bạn nên phản chiếu functions-framework vào sổ đăng ký riêng tư của mình. Đưa functions-framework được phản chiếu vào hàm dưới dạng một phần phụ thuộc để tránh cài đặt gói từ Internet công cộng.

Đóng gói các phần phụ thuộc cục bộ

Bạn cũng có thể đóng gói và triển khai các phần phụ thuộc cùng với hàm của mình. Phương pháp này sẽ hữu ích nếu phần phụ thuộc của bạn không có sẵn thông qua trình quản lý gói pip hoặc nếu quyền truy cập Internet của môi trường Cloud Functions bị hạn chế.

Ví dụ: bạn có thể sử dụng một cấu trúc thư mục như sau:

myfunction/
├── main.py
└── localpackage/
    ├── __init__.py
    └── script.py

Sau đó, bạn có thể nhập mã như bình thường từ localpackage bằng câu lệnh import sau.

# Code in main.py
from localpackage import script

Xin lưu ý rằng phương pháp này sẽ không chạy bất kỳ tệp setup.py nào. Bạn vẫn có thể kết hợp các gói có những tệp đó, nhưng có thể các gói này sẽ không chạy đúng cách trên Cloud Functions.