Hướng dẫn how do you use a flag in python? - làm thế nào để bạn sử dụng một lá cờ trong python?

Bạn đang làm đúng. Bạn đã thiết lập một mảng các dịch vụ microser cung cấp API REST để hỗ trợ ứng dụng doanh nghiệp. Kiến trúc của bạn bao gồm các dịch vụ được ghép nối lỏng lẻo đã cho phép nhóm của bạn triển khai các bản cập nhật nhanh chóng để đáp ứng các yêu cầu và lỗi tính năng mới.

Nhưng khi đến lúc phải thay đổi, bạn vẫn thấy mình phải vật lộn với sự phụ thuộc.

Mặc dù có thể phiên bản API của bạn, bạn muốn một cái gì đó chi tiết hơn. API mới vẫn yêu cầu phát hành cả dịch vụ mới và ứng dụng khách mới. Sẽ rất tốt nếu điều phối một sự thay đổi giữa máy khách và microservice mà không cần đưa ra mã mới?

Tính năng chuyển đổi (còn được gọi là cờ tính năng) cung cấp cho bạn khả năng đó và hơn thế nữa!

Tính năng chuyển đổi cung cấp một cách để kiểm soát hành vi mới trong một ứng dụng bằng cách bật hoặc vô hiệu hóa nó mà không triển khai một phiên bản khác. Bạn có thể cài đặt các công cụ chuyển đổi này trong Dịch vụ và Máy khách. & NBSP; Ví dụ: với các dịch vụ REST, bạn có thể chuyển đổi hành vi mới cho một tập hợp con của người dùng hoặc chỉ bật nó sau khi triển khai ứng dụng khách mới.

Vì vậy, chúng tôi thêm một tham số mới vào tệp cấu hình hoặc dòng lệnh của chúng tôi, mặc định nó là tắt, tắt và lật "trên" khi máy khách mới được triển khai, phải không? Không. Đó không phải là một giải pháp bền vững. Đó là một hack. Cập nhật tệp cấu hình không nhất thiết phải dễ dàng hơn so với việc triển khai cấu hình mới, cũng không nên. Trong nhiều hệ thống, thay đổi cấu hình là một bản phát hành mới. Và điều gì xảy ra khi việc di chuyển đến tính năng mới được thực hiện? Tính năng có ở trong tệp cấu hình không? Tệp cấu hình của bạn sẽ lớn như thế nào sau một vài năm? Có thể nó được bật do nhầm lẫn vào một ngày nào đó?is a new release. And what happens when the migration to the new feature is done? Does the feature stay in the configuration file? How big will your configuration file get after a few years? Is it possible it gets turned on by mistake someday?

Có một cách tốt hơn. Có tính năng quản lý cờ.

Thay vì sử dụng các biến cấu hình phát triển thành nợ kỹ thuật, bạn quản lý các chuyển đổi tính năng từ nền tảng quản lý cờ tính năng. Bạn có thể tích hợp chúng vào một chiến lược để cải thiện mã của bạn, nâng cao khả năng hỗ trợ ứng dụng của bạn và làm cho khách hàng của bạn hạnh phúc hơn. Dịch vụ, dựa trên một loạt các yếu tố như phiên bản ứng dụng và nền tảng máy khách. Chúng tôi sẽ thêm một tính năng chuyển đổi vào dịch vụ REST được viết bằng Python. Chúng tôi sẽ bắt đầu với một lá cờ đơn giản được quản lý trong cấu hình và sau đó chuyển nó sang Quản lý tính năng Cloudbees như một phần của hệ thống quản lý cờ tính năng an toàn. Hướng dẫn này giả định sự quen thuộc với Python cơ bản và một chút bình. Bạn sẽ cần cài đặt Python 2.x trên hệ thống của mình, cùng với PIP..

Thiết lập môi trường ảo Python

Đầu tiên, bạn sẽ thiết lập một môi trường ảo Python để chạy microservice. Nếu bạn chưa có & nbsp; VirtualEnv được cài đặt, bạn có thể cài đặt nó với & nbsp; pip.virtualenv installed yet, you can install it with PIP.

$ pip install virtualenv

Tiếp theo, tạo một thư mục và chạy VirtualEnv bên trong nó. Sau đó, sử dụng Python của môi trường ảo để cài đặt & nbsp; bình.virtualenv inside it. Then use the virtual environment's Python to install Flask.

$ mkdir rollout
$ cd rollout
$ virtualenv rollout
New python executable in flask/bin/python
Installing setuptools............................done.
Installing pip...................done.
$ rollout/bin/pip install flask

Bây giờ bạn có một môi trường ảo được cài đặt bằng bình. Chúng tôi sẽ là & nbsp; làm tất cả sự phát triển của chúng tôi ở đây. Bạn có thể sử dụng bất kỳ trình soạn thảo hoặc IDE nào bạn muốn cho các ví dụ sau. Tôi sẽ chỉ hiển thị đoạn mã và đầu ra của hầu hết các lệnh. Trước tiên, hãy tạo một máy chủ web đơn giản, vì vậy chúng tôi chắc chắn rằng mọi thứ đều hoạt động. Vì vậy, hãy tạo một tên tệp WebServer.py và thêm mã này:. We'll be doing all of our development here. You can use any editor or IDE you wish for the following examples. I'll just show code snippets and the output of most commands. First, let's create a simple web server, so we're sure everything is in working order. So, create a file name webserver.py and add this code:

#!rollout/bin/python
from flask import Flask

app = Flask(name)

@app.route('/')
def index():
    return "Hello, Rollout!"

if name == 'main':
app.run(debug=True)

Chúng tôi đã tạo một ứng dụng bình và thiết lập một tuyến đường cho đường dẫn gốc. Khi trình duyệt yêu cầu tài liệu gốc, máy chủ sẽ trả về một lời chào bằng văn bản đơn giản. Tiếp theo, hãy làm cho nó thực thi, vì vậy chúng ta có thể chạy tập lệnh.

$ chmod +x webserver.py

Cuối cùng, đã đến lúc chạy nó.

& nbsp; Bây giờ hãy trỏ trình duyệt web của bạn tại Localhost và Port 5000.

& nbsp; Chúng tôi có một máy chủ web đơn giản để làm việc. Tiếp theo, chúng tôi sẽ thêm một điểm cuối còn lại và cờ tính năng.

Tính năng Python chuyển đổi

Bây giờ, chúng ta hãy biến điều này thành một dịch vụ nghỉ ngơi và thêm một tính năng chuyển đổi đơn giản. Đầu tiên, chúng tôi sẽ xác định một tài liệu đại diện cho một ngày bình thường. Dịch vụ của chúng tôi sẽ trả về tài liệu này để đáp ứng yêu cầu REST. Tiếp theo, thay đổi tuyến một và duy nhất để trả lại tài liệu đó khi nhận được yêu cầu nhận không có tham số. Cuối cùng, chỉnh sửa đường dẫn URL để trông giống như một ứng dụng REST.

#!rollout/bin/python
from flask import Flask, jsonify

app = Flask(name)

normalday = {
        'id': 1,
        'title': u'Meh',
        'description': u'Just another day',
        'party': False
}

@app.route('/calendar/api/v1.0/whatistoday', methods=['GET'])
def get_tasks():
    return jsonify({'today': normalday})

if name == 'main':
    app.run(debug=True)

Vì vậy, chúng tôi đã thiết lập Lịch/API/V1.0/Whatistoday là điểm cuối của chúng tôi. Hãy đánh nó từ trình duyệt. Chạy lại Ứng dụng.py.calendar/api/v1.0/whatistoday as our endpoint. Let's hit it from the browser. Rerun app.py.

Sau đó, chỉ trình duyệt của bạn vào URL mới để chúng tôi có thể thấy phản hồi nghỉ ngơi của chúng tôi trông như thế nào.

Chúng tôi có một dịch vụ nghỉ ngơi cơ bản! Bây giờ, hãy thêm một tính năng chuyển đổi. Không phải mỗi ngày chỉ là một ngày khác. Chúng tôi cần một tính năng cho các ngày lễ mà chúng tôi có thể lật khi chúng tôi muốn trả lại một phản hồi khác cho yêu cầu GET của chúng tôi. Đầu tiên, bạn sẽ cần tạo một tệp cấu hình. Tạo một tên tệp lịch. Bắt đầu với nó được đặt thành True.calendar.properties with a single section named calendar and a single property named holiday. Start with it set to true.

[calendar]
holiday=False

Tiếp theo, thêm mã để đọc nó vào App.Py. Thêm & nbsp; ConfigParSer vào nhập.app.py. Add ConfigParser to the imports.

import ConfigParser

Và sử dụng & nbsp; RawConfigParser để xử lý tệp.RawConfigParser to process the file.

config = ConfigParser.RawConfigParser()
config.read('calendar.properties')
holiday = config.getboolean("calendar", "holiday")

Vì vậy, chúng tôi có một boolean cho biết liệu đó có phải là một kỳ nghỉ hay không. Bây giờ chúng ta hãy sử dụng sửa đổi tuyến đường của chúng tôi, vì vậy nó sử dụng thuộc tính cấu hình để quyết định tài liệu nào sẽ trả về.

normalday = {
        'id': 1,
        'title': u'Meh',
        'description': u'Just another day',
        'party': False
}

specialday = {
        'id': 2,
        'title': u'Woo-hoo!',
        'description': u'A day to remember!',
        'party': True
}

@app.route('/calendar/api/v1.0/whatistoday', methods=['GET'])
def get_tasks():
    if holiday == True:
        return jsonify({'today': specialday})
    else:
        return jsonify({'today': normalday})

Chúng tôi có hai ngày khác nhau được xác định và dịch vụ còn lại sẽ trả về một trong những ngày khác tùy thuộc vào cài đặt cấu hình. Vì vậy, hãy bắt đầu app.py và làm mới trình duyệt của bạn.app.py and refresh your browser.

Vì Holiday được đặt thành True, chúng ta thấy đối tượng JSON Holiday. Tiếp theo, hãy dừng App.Py và chỉnh sửa tệp cấu hình để đặt Holiday thành False. Bắt đầu dịch vụ và làm mới trình duyệt.+holiday is set to True, we see the holiday JSON object. Next, stop app.py and edit the configuration file to set holiday to False. Start the service, and refresh the browser again.+

& nbsp; Vì chúng tôi lật giá trị cho & nbsp; Holiday thành FALSE, chúng tôi sẽ thấy tin nhắn cho một ngày bình thường. Chúng tôi đã thêm cờ tính năng đầu tiên của chúng tôi. Giá trị của kỳ nghỉ trong tệp thuộc tính kiểm soát hành vi ứng dụng của chúng tôi. Chúng ta có thể trả về đối tượng JSON mong muốn bằng cách sửa đổi cấu hình và mà không cần triển khai mã mới. Nhưng, chúng tôi vẫn cần quản lý tệp cấu hình và khởi động lại ứng dụng sau khi chúng tôi thay đổi.holiday to false, we see the message for a normal day again. We’ve added our first feature flag. The value of holiday in the properties file controls our application’s behavior. We can return the desired JSON object by modifying the configuration and without deploying new code. But, we still need to manage the configuration file and restart the application after we change it.

Quản lý cờ tính năng Python

Tệp thuộc tính không phải là một hệ thống quản lý cờ tính năng. Nó yêu cầu sửa đổi một tệp cấu hình trong sản xuất, đây là một tai nạn đang chờ xảy ra. Nếu chúng tôi muốn tránh chỉnh sửa cấu hình trực tiếp, chúng tôi phải phiên bản và phân phối các tệp cấu hình như mã để chúng tôi có thể theo dõi các thay đổi. Vì vậy, hãy xem xét một cách tốt hơn để quản lý tính năng Python chuyển đổi với Quản lý tính năng Cloudbees.

Bắt đầu với Quản lý tính năng Cloudbees

Đầu tiên, bạn sẽ cần tạo một tài khoản quản lý tính năng Cloudbees miễn phí tại đây. Sau khi hoàn thành, đăng nhập vào tài khoản của bạn và tạo một ứng dụng mới.

Hãy chắc chắn chọn Python, như được hiển thị ở trên. Tiếp theo, bạn sẽ thấy các hướng dẫn để thêm quản lý tính năng Cloudbees vào ứng dụng của bạn. Để lại hộp thoại này mở trong khi bạn thiết lập môi trường của mình để bạn có thể quay lại nó. Bạn sẽ muốn sử dụng nó sau để hoàn thành việc thiết lập ứng dụng của mình. Bây giờ bạn cần thêm ROX vào môi trường ảo bạn đang sử dụng. Thực hiện ROVOUT/PIP Cài đặt ROX từ dòng lệnh.rollout/pip install rox from the command line.

& nbsp; PIP sẽ tạo ra rất nhiều đầu ra.

Khởi tạo API

Tiếp theo, chúng ta cần khởi tạo SDK với khóa ứng dụng được hiển thị ở trên. Đầu tiên, thêm câu lệnh nhập & nbsp; nhập rox.server.rox_server vào đầu tệp. Sau đó thêm cuộc gọi vào & nbsp; rox.setup () với khóa ứng dụng của bạn.import rox.server.rox_server to the top of the file. Then add the call to Rox.setup() with your application key.

#!rollout/bin/python
from flask import Flask, jsonify
from rox.server.rox_server import Rox

app = Flask(name)

Rox.setup("YOUR_APPLICATION_KEY");

Chúng tôi sẽ chạy điều này một lần để khởi tạo quản lý tính năng Cloudbees, vì vậy phần còn lại của ứng dụng có thể giữ nguyên bây giờ. Nhấp vào Tiếp theo trên hộp thoại Cài đặt.Next on the installation dialog.

Quản lý tính năng Cloudbees đang chờ ứng dụng khởi tạo. Chạy App.Py.app.py.

Ứng dụng sẽ đưa ra máy chủ web, nhưng chúng tôi chỉ quan tâm đến việc khởi tạo ROX. Khi bạn thấy máy chủ đã sẵn sàng cho các yêu cầu, hãy kiểm tra và đảm bảo bạn thấy thông báo thành công ở trên.Rox. When you see the that the server is ready for requests, check and make sure you see the Success message above.

Tạo một tính năng Python chuyển đổi

Nhấp vào Chuyển đến ứng dụng trên hộp thoại Thành công trong Bảng điều khiển Quản lý tính năng Cloudbees nếu bạn chưa có. Ở phía bên trái của trang, có một mục menu cờ. Nó chưa được bật, vì bạn chưa tạo bất kỳ cờ nào. Vì vậy, bạn cần thêm một tính năng chuyển đổi vào ứng dụng của bạn. Đây là một quy trình gồm hai bước. Đầu tiên, & nbsp; Xác định chuyển đổi trong mã ứng dụng của bạn. Sau đó chạy ứng dụng và cờ mới được đăng ký trong bảng điều khiển quản lý tính năng Cloudbees. Chúng tôi sẽ thêm mã chuyển đổi tính năng trong tệp nguồn chính để giữ cho mọi thứ đơn giản. Trong một ứng dụng sản xuất, bạn sẽ chia mọi thứ thành các tệp khác nhau cho mỗi lớp. Cờ tính năng được giữ trong RoxContainers. Hãy thêm một vào ứng dụng. Đầu tiên, nhập rox_flag vào ứng dụng.Go To App on the success dialog in the CloudBees Feature Management dashboard if you haven't already. On the left-hand side of the page, there is a Flags menu item. It's not enabled yet, because you haven't created any flags. So you need to add a feature toggle to your application. This is a two-step process. First,  define the toggle in your application code. Then run the application, and the new flag is registered in the CloudBees Feature Management dashboard. We're going to add the feature toggle code in the main source file to keep things simple. In a production application, you'd break things down into different files for each class. Feature flags are kept in RoxContainers. Let's add one to the application. First, import rox_flag into the application.

$ mkdir rollout
$ cd rollout
$ virtualenv rollout
New python executable in flask/bin/python
Installing setuptools............................done.
Installing pip...................done.
$ rollout/bin/pip install flask
0

Sau đó, tạo một lớp container với một thành viên. Gần đỉnh của tập tin.

$ mkdir rollout
$ cd rollout
$ virtualenv rollout
New python executable in flask/bin/python
Installing setuptools............................done.
Installing pip...................done.
$ rollout/bin/pip install flask
1

Lớp này chứa một thành viên có tên là Isholiday. Một Roxflag giữ một chuyển đổi tính năng. Bạn sẽ thấy cách sử dụng nó trong một khoảnh khắc. Tạo một thể hiện của container, và sau đó một khi container được tạo, hãy đăng ký nó bằng API ROX. Vì vậy, ngay trước khi gọi đến rox.setup (), đăng ký cuộc gọi với container. Đăng ký chấp nhận một tên với nó. Chúng tôi sẽ gọi đây là một & nbsp; cờ.isHoliday. A RoxFlag holds a feature toggle. You'll see how to use it in a moment. Create an instance of the container, and then once the container is created, register it with the Rox API. So right before the call to Rox.setup(), call register with the container. Register accepts a name with it. We'll call this one Flags.

$ mkdir rollout
$ cd rollout
$ virtualenv rollout
New python executable in flask/bin/python
Installing setuptools............................done.
Installing pip...................done.
$ rollout/bin/pip install flask
2

Bây giờ, chạy ứng dụng và để nó hoàn thành khởi tạo. Như trước đây, & nbsp; dừng nó khi nó bắt đầu chờ yêu cầu. Quay trở lại bảng điều khiển quản lý tính năng Cloudbees và nhấp vào menu cờ.Flags menu.

Cờ đã được đăng ký với Quản lý tính năng Cloudbees. Vì chúng tôi & nbsp; đã đăng ký cờ trong một container có tên là cờ, tên của nó trong bảng điều khiển là cờ.isholiday. Đặt tên container cung cấp một cơ chế để tổ chức cờ (và các biến khác được quản lý bởi ROX) trong một ứng dụng lớn.Flags, its name in the dashboard is Flags.isHoliday. Naming containers provides a mechanism for organizing flags (and other variables managed by Rox) in a large application.

Sử dụng chuyển đổi tính năng Python

Bây giờ chúng ta cần nối dây bật lên để chúng ta có thể sử dụng nó để kiểm soát hành vi của ứng dụng. Roxflag có phương thức is_enables () mà chúng tôi gọi để xem liệu tính năng này được chuyển đổi đúng hay sai. Vì vậy, hãy tích hợp cờ vào mã của chúng tôi. Đây là toàn bộ ứng dụng sau khi thêm mã để sử dụng chuyển đổi:RoxFlag has an is_enabled() method that we call to see if the feature is toggled true or false. So, let's integrate the flag into our code. Here's the entire application after adding the code to use the toggle:

$ mkdir rollout
$ cd rollout
$ virtualenv rollout
New python executable in flask/bin/python
Installing setuptools............................done.
Installing pip...................done.
$ rollout/bin/pip install flask
3

Bên trong tuyến ứng dụng, chúng tôi đã thay thế boolean mà chúng tôi đã tải từ tệp cấu hình bằng isHoliday.is_enables ().isHoliday.is_enabled().

Tạo ra một thí nghiệm

Chúng tôi quản lý cờ bằng cách thêm chúng vào các thí nghiệm. Một thí nghiệm là một sơ đồ kiểm soát cờ (và các biến khác) trong sản xuất. Nhấp vào sản xuất trong menu bên tay trái và sau đó nhấp vào thí nghiệm. Điều này sẽ đưa ra một màn hình với một thử nghiệm tạo & nbsp; nút. Nhấp vào đó và sau đó điền vào cửa sổ thử nghiệm mới với một tên.Production in the left-hand side menu and then click Experiments. This will bring up a screen with a Create Experiment button. Click that and then fill out the new experiment window with a name.

Và chúng tôi thấy một bảng điều khiển để đặt cờ thành đúng, sai hoặc chia. Một số tiêu chí có thể đặt giá trị của cờ. Đối với hướng dẫn này, chúng tôi sẽ gắn bó với việc đặt cờ là đúng hoặc sai cho tất cả người dùng. Cờ mặc định là sai hoặc & nbsp; bị vô hiệu hóa. Hãy chạy ứng dụng và xem nó hoạt động. Chạy App.Py.false or disabled. Let's run the application and see it in action. Run app.py.

& nbsp; Tiếp theo, làm mới trình duyệt web của bạn.

Chúng tôi thấy hồ sơ cho một ngày bình thường. Quay trở lại thử nghiệm và đặt cờ thành True cho tất cả người dùng. Tiếp theo, khởi động lại kịch bản Python. Sau đó làm mới trình duyệt của bạn một lần nữa.true for all users. Next, restart the Python script. Then refresh your browser again.

Nó đã làm việc! Chúng tôi có thể quản lý chuyển đổi tính năng của chúng tôi từ bảng điều khiển.

Làm mới cờ

Dịch vụ còn lại chỉ lấy giá trị của ISHOLiday khi khởi động. Nếu chúng tôi muốn chuyển cờ, chúng tôi vẫn cần khởi động lại ứng dụng của mình. Chúng tôi thà có thể chuyển cờ trong thời gian thực. & Nbsp; hãy sửa nó. Chúng ta có thể làm mới ROX API bật tắt bằng Rox.Fetch (). Chúng tôi có thể gọi điều này bất cứ lúc nào trong ứng dụng của chúng tôi để có được trạng thái mới nhất của cờ của chúng tôi. Nhưng, đây là một ứng dụng bình và Flask muốn kiểm soát luồng chính. Chúng ta cần thiết lập làm mới các giá trị chuyển đổi tính năng lên như một tác vụ nền. Cũng sẽ rất vui khi biết những lá cờ đã thay đổi mỗi khi chúng tôi chạy tìm kiếm. Vì vậy, hãy thực hiện hai bản cập nhật mã cuối cùng. Đầu tiên, hãy chuyển một số tùy chọn cấu hình cho rox.setup (). Chúng tôi định cấu hình hành vi của API ROX với lớp RoxOptions. Chúng tôi sẽ cài đặt một trình xử lý cấu hình được tìm nạp. Đây là một cuộc gọi lại mà Rox sẽ gọi khi trạng thái mới nhất của cờ của chúng tôi được tìm nạp.isHoliday's value on startup. If we want to toggle the flag, we still need to restart our application. We'd rather be able to toggle the flag in real time. Let's fix that. We can refresh Rox API toggles with Rox.fetch(). We can call this anytime in our application to get the latest state of our flags. But, this is a Flask application, and Flask wants to control the main thread. We need to set refreshing the feature toggle values up as a background task. It would also be nice to know if the flags have changed each time we run fetch. So, let's make two last code updates. First, let's pass some configuration options to Rox.setup(). We configure the Rox API's behavior with the RoxOptions class. We're going to install a configuration fetched handler. This is a callback that Rox will call when the latest state of our flags is fetched.

$ mkdir rollout
$ cd rollout
$ virtualenv rollout
New python executable in flask/bin/python
Installing setuptools............................done.
Installing pip...................done.
$ rollout/bin/pip install flask
4

Chúng tôi đã tạo một thể hiện của lớp và được truyền trong một lambda để chạy khi cấu hình được tìm nạp. Chúng tôi sẽ in một tin nhắn cho biết việc tìm nạp đã hoàn thành và liệu có bất kỳ thay đổi nào hay không. Nếu bạn chạy ứng dụng ngay bây giờ, bạn sẽ thấy nó được gọi một lần, khi khởi động ứng dụng.

$ mkdir rollout
$ cd rollout
$ virtualenv rollout
New python executable in flask/bin/python
Installing setuptools............................done.
Installing pip...................done.
$ rollout/bin/pip install flask
5

Tiếp theo, chúng ta cần cài đặt một chức năng sẽ chạy định kỳ và lấy trạng thái cờ. Vì Flask muốn kiểm soát các luồng ứng dụng, việc cài đặt một luồng trước khi nó bắt đầu hoặc cố gắng chạy trong một luồng khác trước khi điều khiển chuyển sang nó có thể gây ra sự cố. Lựa chọn tốt nhất của chúng tôi là tạo ra một công việc bình. Thêm mã này vào ứng dụng trước khi bạn thực thi App.Run.app.run.

$ mkdir rollout
$ cd rollout
$ virtualenv rollout
New python executable in flask/bin/python
Installing setuptools............................done.
Installing pip...................done.
$ rollout/bin/pip install flask
6

Mã này cài đặt một luồng sẽ chạy rox.fetch () cứ sau ba giây. Chủ đề này sẽ không can thiệp vào trình xử lý yêu cầu của Flask. Bây giờ, hãy bắt đầu lại ứng dụng và thực hiện một vài yêu cầu. Sau đó quay trở lại bảng điều khiển quản lý tính năng Cloudbees, thay đổi cờ và thực hiện nhiều yêu cầu hơn. Bạn sẽ thấy rằng dịch vụ trả về một kết quả khác nhau tùy thuộc vào cách bạn đặt & nbsp; flags.isholiday.Rox.fetch() every three seconds. This thread won't interfere with Flask's request handler. Now, start the application again, and make a few requests. Then head back to the CloudBees Feature Management dashboard, change the flag, and make more requests. You'll see that the service returns a different result depending on how you set Flags.isHoliday.

Dịch vụ còn lại đang chọn các yêu cầu và thay đổi hành vi của nó. Bạn có thể chuyển đổi cờ tính năng của mình trong thời gian thực.

Bắt đầu quản lý cờ tính năng của bạn ngay hôm nay

Đầu tiên, chúng tôi đã xây dựng một dịch vụ nghỉ ngơi nhỏ bằng Python và bình. Sau đó, chúng tôi đã thêm một cờ tính năng cơ bản và sau đó nâng cấp ứng dụng lên tính năng được quản lý chuyển đổi với Quản lý tính năng Cloudbees. Chúng tôi đã hoàn thành bằng cách tích hợp đọc Toggles với vòng lặp sự kiện chính của Flask.

Đây chỉ là phần nổi của tảng băng! Quản lý tính năng CloudBees có thể quản lý các cờ cấu hình chứa nhiều hơn trạng thái & NBSP; trạng thái được bật hoặc bị vô hiệu hóa. Các thử nghiệm có thể phân phối các giá trị cờ trên các người dùng khác nhau dựa trên các giá trị như phiên bản ứng dụng và thiết bị. Đăng ký thử nghiệm quản lý tính năng Cloudbees ngay hôm nay và kiểm soát các cờ tính năng và chiến lược ứng dụng của bạn.

Mã hóa cờ là gì?

Cờ là một thành phần của cấu trúc dữ liệu của ngôn ngữ lập trình.Một máy tính diễn giải giá trị cờ theo các thuật ngữ tương đối hoặc dựa trên cấu trúc dữ liệu được trình bày trong quá trình xử lý và sử dụng cờ để đánh dấu cấu trúc dữ liệu cụ thể.Do đó, giá trị cờ ảnh hưởng trực tiếp đến kết quả xử lý.a component of a programming language's data structure. A computer interprets a flag value in relative terms or based on the data structure presented during processing, and uses the flag to mark a specific data structure. Thus, the flag value directly impacts the processing outcome.

Cờ m có ý nghĩa gì trong các lệnh Python?

Cờ -M đảm bảo rằng bạn đang sử dụng PIP được gắn với Python hoạt động có thể thực thi được.Đó là thực tế tốt để luôn luôn sử dụng -M, ngay cả khi bạn chỉ có một phiên bản Python toàn cầu được cài đặt từ đó bạn tạo ra các môi trường ảo.makes sure that you are using the pip that's tied to the active Python executable. It's good practice to always use -m , even if you have just one global version of Python installed from which you create virtual environments.