官术网_书友最值得收藏!

Azure Functions and Python

If you want to start writing Azure Functions in Python you need to install Python version 3.6.x (you can download the installation package at https://www.python.org/downloads/; make sure that the minor version is 3.6). If you want to use VS Code to implement your Azure Functions in Python then you also need the Python extension for VS Code (you can download it directly inside VS Code or by going to https://marketplace.visualstudio.com/items?itemName=ms-python.python).

Once you have installed Python on your machine, you can create your first Azure Function in the same way you did for C# and Node.js.

First of all, you have to create a virtual environment. You can do this opening Command Prompt and using the following commands:

py -3.6 -m venv .env
.env\scripts\activate

In this case, you create a virtual environment called .env and activate it. Once you are in the virtual environment, you can initialize your Azure Function project:

(.env) C:\MasteringServerless\MyFirstPythonFunction>func init --worker-runtime python

The following screenshot shows the output of the preceding command:

Finally, you can create the Azure Function:

(.env) C:\MasteringServerless\MyFirstPythonFunction>func new --name HttpPythonFunction --template HttpTrigger

The following screenshot shows the output of the preceding command:

The folder structure for a Python function project is shown in the following diagram:

You have a folder for each function in your project and a SharedCode folder (if you need it) to contain code that is shared by different functions.

The __init__.py file contains the following function code:

import logging
import azure.functions as func

def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')

name = req.params.get('name')
if not name:
try:
req_body = req.get_json()
except ValueError:
pass
else:
name = req_body.get('name')

if name:
return func.HttpResponse(f"Hello {name}!")
else:
return func.HttpResponse("Please pass a name on the query string or in the request body", status_code=400)

A function in Python should be a stateless method that gets inputs, processes them, and produces output. By default, the Azure Functions Runtime looks for a method called main() in the __init__.py file. If you need or want to, you can change this convention using the scriptFile and entryPoint properties in the function.json file:

{
"scriptFile": "myScript.py",
"entryPoint": "myentry",
...
}

The bindings, as usual, are defined in the function.json file:

{
...,
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "$return"
}
]
}

In the Python function, you can write the log using the logging handler, which exposes a set of methods, such as critical(), error(), and warning().

Once you have created your function, you can start and host it:

(.env) C:\MasteringServerless\MyFirstPythonFunction>func host start

The following screenshot shows the output of the preceding command:

Also, in this case (in the same way you saw for the Node.js), the runtime initializes the host reading the host.json file, then starts it and starts the language worker process to support Python, as you can see in the following screenshot:

Finally, the runtime starts one job for each function discovered in the function app folder, and your functions are up and running.

More information about the language worker and language extensibility will be given in later sections.

主站蜘蛛池模板: 文安县| 盐津县| 千阳县| 孟津县| 玉山县| 田林县| 武川县| 高陵县| 罗山县| 宿松县| 广灵县| 共和县| 台南县| 青川县| 阿尔山市| 安福县| 宁德市| 土默特右旗| 娄烦县| 仪征市| 东海县| 宁安市| 英山县| 乡宁县| 晋城| 固原市| 阳朔县| 保德县| 梅河口市| 钟祥市| 雷州市| 利津县| 葫芦岛市| 淮北市| 林周县| 江孜县| 新津县| 随州市| 壶关县| 盐边县| 宝应县|