0

我的问题是:我尝试在 Azure Function App 服务中执行一个新上传的 python 函数并启动它(无论我使用 blob 触发器还是 http 触发器)我总是得到同样的错误:

Exception while executing function: Functions.TestBlobTrigger Result: Failure
Exception: TypeError: expected str, bytes or os.PathLike object, not PosixPath
Stack:   File "/azure-functions-host/workers/python/3.8/LINUX/X64/azure_functions_worker/dispatcher.py", line 284, in _handle__function_load_request
    func = loader.load_function(
  File "/azure-functions-host/workers/python/3.8/LINUX/X64/azure_functions_worker/utils/wrappers.py", line 40, in call
    return func(*args, **kwargs)
  File "/azure-functions-host/workers/python/3.8/LINUX/X64/azure_functions_worker/loader.py", line 53, in load_function
    register_function_dir(dir_path.parent)
  File "/azure-functions-host/workers/python/3.8/LINUX/X64/azure_functions_worker/loader.py", line 26, in register_function_dir
    _submodule_dirs.append(fspath(path))

为什么会发生这种情况:当函数成功部署时,我在一个 blob 中上传了一个文件以触发该函数,但我总是遇到同样的错误,这是由 pathlib 库引起的(https://pypi.org/project/pathlib/)。我编写了一个非常简单的函数,可以在我的本地 vscode 中运行,它只是打印一条消息。

import logging
import configparser
import azure.functions as func
from azure.storage.blob import BlockBlobService
import os
import datetime
import io
import json
import calendar
import aanalytics2 as api2
import time
import pandas as pd
import csv
from io import StringIO

def main(myblob: func.InputStream):

    logging.info("BLob Trigger function Launched  ");
    blob_bytes = myblob.read();
    blobmessage=blob_bytes.decode()
    func1 = PythonAPP.callMain();
    func1.main(blobmessage); 

Pythonapp 类是:

class PythonAPP:

    def __init__(self):
        
        logging.info('START extractor. ');
        self.parameter="product";


    def main(self,message1):
        var1="--";
        try:
            var1="---";
            
            
            logging.info('END: ->paramet '+str(message1));
            


        except Exception as inst:
            
            logging.error("Error  PythonAPP.main : " + str(inst));
        return var1;    

我的 requirements.txt 文件是:

azure-storage-blob== 0.37.1
azure-functions-durable
azure-functions
pandas
xlrd
pysftp
openpyxl
configparser
PyJWT==1.7.1
pathlib
dicttoxml
requests
aanalytics2

我创建了这个简单的函数,以检查是否可以在 Azure Functions 中上传最简单的示例,是否有任何我忘记的依赖项?

检查我发现的功能的状态: 在此处输入图像描述

------------更新1--------

该函数失败是因为 pathlib 导入,这是因为在函数的要求中它下载了这个库并且使用 AZ 函数失败。请参阅以下链接中的 requirements.txt 文件:https ://github.com/pitchmuc/adobe_analytics_api_2.0/blob/master/requirements.txt

我可以以某种方式排除它吗?

好吧,我无法为此提供答案,我做了一个walkarround。在这种情况下,我在 github 存储库中创建了该库的副本。在这个副本中,我删除了 requrements.txt 和 setup.py 中对 pathlib 的引用,因为这个库导致 AZ 函数 APPS 失败。顺便在项目的需求文件中引用项目,所以请注意我上面写的requiremnts文件并将aanalytics2引用更改为:

git+git://github.com/theURLtotherepository.git@master#egg=theproyectname 

链接。

我在谷歌检查了很多例子,但没有一个对我有帮助:

使用 OSError 成功部署后 Azure 功能失败:[Errno 107]

https://github.com/Azure/azure-functions-host/issues/6835

https://docs.microsoft.com/en-us/answers/questions/39865/azure-functions-python-httptrigger-with-multiple-s.html

https://docs.microsoft.com/en-us/answers/questions/147627/azure-functions-modulenotfounderror-for-python-scr.html

缺少对 Python Azure 函数的依赖--> 没有捆绑器标志或 –build 远程

https://github.com/OpenMined/PySyft/issues/3400

4

0 回答 0