Python Azure函数返回响应并继续执行功能

时间:2020-06-27 23:22:47

标签: python python-3.x azure-functions

我正在尝试获取Az函数以返回HTTP响应,然后继续执行后台线程。在下面的代码中,我尝试使用线程,但是响应仍在等待函数完成后再返回。有什么我想念的吗?

import logging
import json
import threading
import azure.functions as func
from .commands import start_process


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

    command = req.params.get('command')
    vm = req.params.get('vm')

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

    if command == 'restart':

        thread = threading.Thread(target=start_process(vm, command))
        thread.start()

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

1 个答案:

答案 0 :(得分:0)

如果程序正在运行线程(不是daemon),则程序将在终止之前等待这些线程完成。请关注this帖子以了解更多信息。

因此,您创建的AZ函数(这是一种无状态方法)将在尝试使用return语句退出该函数时等待线程完成。因此,您看到的行为。

我认为您需要研究fire and forget的线程执行方式,而this这样的问答应该对此有所帮助。