Xử lý sự phụ thuộc


Có hai cách để chỉ định các phần phụ thuộc cho Hàm đám mây đượ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.

Thông số phụ thuộc sử dụng tiêu chuẩn Pipfile/Pipfile.lock không được hỗ trợ. Dự án của bạn không nên bao gồm các tệp này.

Chỉ định phụ thuộc với pip

Các phần phụ thuộc trong Python được quản lý bằng pip và được thể hiện trong 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ã chức năng của bạn.

Khi bạn triển khai hoặc triển khai lại chức năng của mình, Cloud Functions sẽ 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 trên mỗi gói. Mỗi dòng chứa tên gói và tùy chọn phiên bản được yêu cầu. Để biết thêm chi tiết, hãy xem tài liệu tham khảo requirements.txt .

Để ngăn bản dựng của bạn không bị ảnh hưởng bởi những thay đổi của phiên bản phụ thuộc, hãy cân nhắc việc ghim các gói phụ thuộc của bạn 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

Khung chức năng là phần phụ thuộc bắt buộc cho tất cả các chức năng. Mặc dù Cloud Functions thay mặt bạn cài đặt nó khi hàm được tạo, nhưng chúng tôi khuyên bạn nên đưa nó vào làm phần phụ thuộc rõ ràng cho rõ ràng.

Nếu chức năng của bạn phụ thuộc vào các phần phụ thuộc riêng tư, chúng tôi khuyên bạn nên phản chiếu functions-framework vào sổ đăng ký riêng tư của mình. Bao gồm functions-framework được nhân đôi làm phần phụ thuộc cho chức năng của bạn để tránh cài đặt gói từ internet công cộng.

Đóng gói 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 chức năng của mình. Cách tiếp cận này 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 Chức năng đám mây của bạn bị hạn chế.

Ví dụ: bạn có thể sử dụng 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ách sử dụng câu lệnh import sau.

# Code in main.py
from localpackage import script

Lưu ý rằng phương pháp này sẽ không chạy bất kỳ tệp setup.py nào. Các gói chứa các tệp đó vẫn có thể được nhóm lại nhưng có thể không chạy chính xác trên Cloud Functions.