Di chuyển trăn 2 sang 3

Lưu ý. Trong vài tháng tới, chúng tôi sẽ tổ chức lại trang web tài liệu App Engine để giúp tìm nội dung dễ dàng hơn và phù hợp hơn với các sản phẩm còn lại của Google Cloud. Nội dung tương tự sẽ khả dụng nhưng điều hướng hiện sẽ khớp với phần còn lại của các sản phẩm Đám mây. Nếu bạn có phản hồi hoặc câu hỏi khi điều hướng trang web, hãy nhấp vào Gửi phản hồi

  • Trang Chủ
  • Tài liệu
  • Ứng dụng động cơ
  • Tài liệu
  • Môi trường tiêu chuẩn

Gửi phản hồi Di chuyển sang thời gian chạy Python 3 Sắp xếp ngăn nắp với các bộ sưu tập Lưu và phân loại nội dung dựa trên sở thích của bạn

Ghi chú. Bắt đầu từ ngày 1 tháng 1 năm 2020, cộng đồng Python sẽ không còn cập nhật, sửa lỗi hoặc vá các vấn đề bảo mật cho Python 2. 7. Chúng tôi khuyên bạn nên cập nhật các ứng dụng vẫn đang chạy trong thời gian chạy Python 2 của môi trường tiêu chuẩn của Máy ứng dụng lên thời gian chạy Python 3 càng sớm càng tốt. Để biết thêm thông tin, hãy xem hỗ trợ Python 2 trên Google Cloud.

Di chuyển sang thời gian chạy Python 3 cho phép bạn sử dụng các tính năng ngôn ngữ cập nhật và xây dựng các ứng dụng dễ mang theo hơn, với mã thành ngữ. Thời gian chạy Python 3 sử dụng phiên bản mới nhất của trình thông dịch mã nguồn mở Python do Python Software Foundation cung cấp. Các ứng dụng được xây dựng trong thời gian chạy Python 3 có thể sử dụng hệ sinh thái gói và khung phong phú của Python trong ứng dụng của bạn, bao gồm cả những gói sử dụng mã C, bằng cách khai báo các phụ thuộc trong tệp requirements.txt

Tổng quan về quá trình di chuyển thời gian chạy

Chúng tôi đề xuất phương pháp gia tăng sau đối với quá trình di chuyển thời gian chạy, trong đó bạn duy trì một ứng dụng có thể kiểm tra và hoạt động trong suốt quá trình

  1. Nâng cấp ứng dụng của bạn để tương thích với cả Python 2 và Python 3

    Một số giải pháp có sẵn để trợ giúp với việc nâng cấp này. Ví dụ: sử dụng Six, Python-Future hoặc Python-Modernize

    Để biết thêm thông tin về bước này của quy trình di chuyển thời gian chạy, hãy xem Chuyển mã Python 2 sang Python 3 trên trang web tài liệu của Tổ chức phần mềm Python

  2. Chọn một trong các chiến lược triển khai này cho bất kỳ dịch vụ đi kèm App Engine nào mà ứng dụng của bạn sử dụng

    1. Di chuyển các dịch vụ đi kèm của App Engine trong ứng dụng Python 2 của bạn sang các dịch vụ Google Cloud chưa đi kèm, dịch vụ của bên thứ ba hoặc các dịch vụ thay thế được đề xuất khác

    2. Tiếp tục sử dụng các dịch vụ đi kèm cũ trong ứng dụng Python 3 của bạn. Cách tiếp cận này cho phép bạn linh hoạt chuyển sang các dịch vụ tách nhóm sau này trong chu kỳ di chuyển

      Ghi chú. Không phải tất cả các dịch vụ đi kèm của App Engine có sẵn cho Python 2 đều có dịch vụ tương ứng trong Python 3, vì vậy những dịch vụ này sẽ cần được chuyển sang Google Cloud hoặc dịch vụ của bên thứ ba trước khi chuyển sang Python 3

    Đảm bảo kiểm tra ứng dụng của bạn sau khi di chuyển từng dịch vụ

  3. Chuẩn bị tệp cấu hình Máy ứng dụng cho thời gian chạy Python 3. Một số thay đổi quan trọng ảnh hưởng đến cài đặt cấu hình trong app.yaml, bao gồm nhưng không giới hạn ở

    • Các ứng dụng hiện được coi là chủ đề an toàn. Nếu ứng dụng của bạn không an toàn theo luồng, bạn nên đặt max_concurrent_requests trong app.yaml thành 1. Cài đặt này có thể dẫn đến nhiều phiên bản được tạo hơn mức bạn cần cho một ứng dụng an toàn luồng và dẫn đến chi phí không cần thiết
    • Tệp app.yaml không còn định tuyến các yêu cầu tới tập lệnh của bạn nữa. Thay vào đó, bạn được yêu cầu sử dụng khung web có định tuyến trong ứng dụng và cập nhật hoặc xóa tất cả trình xử lý script trong app.yaml. Để biết ví dụ về cách thực hiện điều này với khung Flask, hãy xem mẫu mã hướng dẫn di chuyển App Engine trong GitHub

      Để tìm hiểu thêm về cách thay đổi tệp cấu hình này và các tệp cấu hình khác, hãy xem phần Tệp cấu hình

  4. Kiểm tra và triển khai ứng dụng đã nâng cấp của bạn trong môi trường Python 3

    Sau khi vượt qua tất cả các thử nghiệm của bạn, hãy triển khai ứng dụng đã nâng cấp lên App Engine nhưng ngăn lưu lượng truy cập tự động chuyển sang phiên bản mới. Sử dụng phân tách lưu lượng truy cập để di chuyển dần lưu lượng truy cập từ ứng dụng của bạn trong thời gian chạy Python 2 sang ứng dụng trong thời gian chạy Python 3. Nếu gặp sự cố, bạn có thể định tuyến tất cả lưu lượng truy cập sang phiên bản ổn định cho đến khi sự cố được khắc phục

Để biết ví dụ về cách chuyển đổi ứng dụng Python 2 của bạn sang Python 3, bạn có thể tham khảo các tài nguyên bổ sung này

Sự khác biệt chính giữa thời gian chạy Python 2 và Python 3

Hầu hết các thay đổi bạn cần thực hiện trong quá trình di chuyển thời gian chạy đến từ những khác biệt sau giữa thời gian chạy Python 2 và Python 3

  • Sự cố tương thích giữa Python 2 và Python 3
  • Các dịch vụ đi kèm của Máy ứng dụng trong thời gian chạy Python 3
  • Sự khác biệt về tệp cấu hình
  • Cần có khung web để định tuyến các yêu cầu cho nội dung động
  • Kiểm tra sự khác biệt
  • Sự khác biệt về triển khai

Sự cố tương thích giữa Python 2 và Python 3

Khi Python 3 được phát hành lần đầu tiên vào năm 2008, một số thay đổi không tương thích ngược đã được đưa vào ngôn ngữ này. Một số thay đổi này chỉ yêu cầu cập nhật nhỏ mã của bạn, chẳng hạn như thay đổi câu lệnh print thành hàm print[]. Các thay đổi khác có thể yêu cầu các bản cập nhật quan trọng đối với mã của bạn, chẳng hạn như cập nhật cách bạn xử lý dữ liệu nhị phân, văn bản và chuỗi

Nhiều thư viện mã nguồn mở phổ biến, bao gồm cả thư viện chuẩn Python, cũng đã thay đổi khi chúng chuyển từ Python 2 sang Python 3

Các dịch vụ đi kèm của Máy ứng dụng trong thời gian chạy Python 3

Để giảm bớt sự phức tạp và nỗ lực di chuyển, môi trường tiêu chuẩn của Máy ứng dụng cho phép bạn truy cập nhiều API và dịch vụ đi kèm cũ trong thời gian chạy Python 3, chẳng hạn như Memcache. Ứng dụng Python 3 của bạn có thể gọi các API dịch vụ đi kèm thông qua các thư viện thành ngữ ngôn ngữ và truy cập chức năng tương tự như trên thời gian chạy Python 2

Ghi chú. Để biết danh sách đầy đủ các API dịch vụ đi kèm cũ có sẵn cho Python 3, hãy xem tài liệu tham khảo về API dịch vụ đi kèm cũ.

Bạn cũng có tùy chọn sử dụng các sản phẩm Google Cloud cung cấp chức năng tương tự như các dịch vụ đi kèm cũ. Chúng tôi khuyên bạn nên xem xét việc chuyển sang các sản phẩm Google Cloud chưa được nhóm, vì làm như vậy sẽ cho phép bạn tận dụng các cải tiến liên tục và các tính năng mới

Đối với các dịch vụ đi kèm không khả dụng dưới dạng các sản phẩm riêng biệt trong Google Cloud, chẳng hạn như xử lý hình ảnh, tìm kiếm và nhắn tin, bạn có thể sử dụng các nhà cung cấp bên thứ ba được đề xuất của chúng tôi hoặc các giải pháp thay thế khác

tập tin cấu hình

Trước khi bạn có thể chạy ứng dụng của mình trong thời gian chạy Python 3 của môi trường tiêu chuẩn của Máy ứng dụng, bạn có thể cần phải thay đổi một số tệp cấu hình mà Máy ứng dụng sử dụng

  • app.yaml. Hành vi của một số trường trong tệp cấu hình app.yaml của bạn đã được sửa đổi. Xóa mọi trường không dùng nữa và cập nhật các trường khác như được mô tả trong hướng dẫn di chuyển

  • requirements.txt. Tạo tệp này để cài đặt các phần phụ thuộc của bên thứ ba, bao gồm các gói Python yêu cầu phần mở rộng C gốc. Máy ứng dụng tự động cài đặt các phụ thuộc này trong quá trình triển khai ứng dụng trong thời gian chạy Python 3. Trước đây, để cài đặt các phần phụ thuộc trong thời gian chạy Python 2, bạn phải liệt kê các thư viện được sao chép hoặc tự đóng gói trong tệp này, sau đó chạy lệnh app.yaml2 hoặc liệt kê các thư viện bên thứ ba 'tích hợp sẵn' mà ứng dụng của bạn yêu cầu trong ứng dụng. tập tin yaml

  • app.yaml3. Tệp này không được sử dụng trong thời gian chạy Python 3 và bị bỏ qua nếu được triển khai. Trước đây, trong thời gian chạy Python 2, tệp này được sử dụng để định cấu hình các mô-đun Python và trỏ ứng dụng tới các thư viện bên thứ ba được sao chép hoặc tự đóng gói

Cần có khung web để định tuyến các yêu cầu cho nội dung động

Trong thời gian chạy Python 2, bạn có thể tạo trình xử lý URL trong tệp app.yaml để chỉ định ứng dụng nào sẽ chạy khi một URL hoặc mẫu URL cụ thể được yêu cầu

Trong thời gian chạy Python 3, ứng dụng của bạn cần sử dụng khung web chẳng hạn như Flask hoặc Django để định tuyến các yêu cầu cho nội dung động thay vì sử dụng trình xử lý URL trong app.yaml. Đối với nội dung tĩnh, bạn có thể tiếp tục tạo trình xử lý URL trong tệp app.yaml của ứng dụng

thử nghiệm

Chúng tôi khuyên bạn nên sử dụng phương pháp thử nghiệm đặc trưng cho Python hơn là phụ thuộc vào app.yaml7. Ví dụ: bạn có thể sử dụng app.yaml8 để tạo môi trường Python 3 cục bộ bị cô lập. Bất kỳ khung kiểm tra Python tiêu chuẩn nào cũng có thể được sử dụng để viết các bài kiểm tra đơn vị, tích hợp và hệ thống của bạn. Bạn cũng có thể cân nhắc thiết lập các phiên bản phát triển của dịch vụ hoặc sử dụng trình giả lập cục bộ có sẵn cho nhiều sản phẩm Google Cloud

Theo tùy chọn, bạn có thể sử dụng phiên bản xem trước của app.yaml7 hỗ trợ Python 3. Để tìm hiểu thêm về tính năng thử nghiệm này, hãy xem Sử dụng Máy chủ Phát triển Cục bộ

triển khai

Triển khai qua max_concurrent_requests0 không được hỗ trợ cho Python 3. Thay vào đó, hãy sử dụng công cụ dòng lệnh max_concurrent_requests1 để triển khai ứng dụng của bạn

ghi nhật ký

Ghi nhật ký trong thời gian chạy Python 3 tuân theo tiêu chuẩn ghi nhật ký trong Cloud Logging. Trong thời gian chạy Python 3, nhật ký ứng dụng không còn được gói cùng với nhật ký yêu cầu mà được phân tách thành các bản ghi khác nhau. Để tìm hiểu thêm về cách đọc và ghi nhật ký trong thời gian chạy Python 3, hãy xem hướng dẫn ghi nhật ký

Tài nguyên di chuyển bổ sung

Để biết thêm thông tin về cách di chuyển các ứng dụng App Engine của bạn sang các dịch vụ Đám mây độc lập hoặc thời gian chạy Python 3, bạn có thể tham khảo các tài nguyên App Engine này

Tại sao chuyển từ Python 2 sang 3?

Lý do cấp bách nhất để di chuyển là Quỹ phần mềm Python sẽ không còn phát hành các bản sửa lỗi bảo mật cho các lỗ hổng hoặc thậm chí là các bản cập nhật hiệu suất . Tuy nhiên, chuyển sang Python 3 có thể là một nhiệm vụ khó chịu.

Python 2 và Python 3 có thể hoán đổi cho nhau không?

Python 3 không tương thích ngược với Python 2 . Python 2 chủ yếu được sử dụng để trở thành Kỹ sư DevOps. Nó không còn được sử dụng sau năm 2020. Python 3 được sử dụng trong rất nhiều lĩnh vực như Kỹ thuật phần mềm, Khoa học dữ liệu, v.v.

Chủ Đề