I have a project hosted on Microsoft Azure. It has Azure Functions that are Python code and they recently stopped working (500 Internal Server Error). The code has errors I haven’t had before and no known changes were made (but the possibility exists because people from other teams could have changed a configuration somewhere without telling anyone).
Here’s some log :
2022-07-21T08:41:14.226884682Z: [INFO] info: Function.AllCurveApi[1]
2022-07-21T08:41:14.226994383Z: [INFO] Executing 'Functions.AllCurveApi' (Reason='This function was programmatically called via the host APIs.', Id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
2022-07-21T08:41:14.277076231Z: [INFO] fail: Function.AllCurveApi[3]
2022-07-21T08:41:14.277143831Z: [INFO] Executed 'Functions.AllCurveApi' (Failed, Id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, Duration=6ms)
2022-07-21T08:41:14.277932437Z: [INFO] Microsoft.Azure.WebJobs.Host.FunctionInvocationException: Exception while executing function: Functions.AllCurveApi
2022-07-21T08:41:14.277948737Z: [INFO] ---> Microsoft.Azure.WebJobs.Script.Workers.Rpc.RpcException: Result: Failure
2022-07-21T08:41:14.277953937Z: [INFO] Exception: ImportError: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory. Troubleshooting Guide: https://aka.ms/functions-modulenotfound
2022-07-21T08:41:14.277957637Z: [INFO] Stack: File "/azure-functions-host/workers/python/3.6/LINUX/X64/azure_functions_worker/dispatcher.py", line 318, in _handle__function_load_request
2022-07-21T08:41:14.277961437Z: [INFO] func_request.metadata.entry_point)
2022-07-21T08:41:14.277991237Z: [INFO] File "/azure-functions-host/workers/python/3.6/LINUX/X64/azure_functions_worker/utils/wrappers.py", line 42, in call
2022-07-21T08:41:14.277995937Z: [INFO] raise extend_exception_message(e, message)
2022-07-21T08:41:14.277999337Z: [INFO] File "/azure-functions-host/workers/python/3.6/LINUX/X64/azure_functions_worker/utils/wrappers.py", line 40, in call
2022-07-21T08:41:14.278020737Z: [INFO] return func(*args, **kwargs)
2022-07-21T08:41:14.278024237Z: [INFO] File "/azure-functions-host/workers/python/3.6/LINUX/X64/azure_functions_worker/loader.py", line 85, in load_function
2022-07-21T08:41:14.278027837Z: [INFO] mod = importlib.import_module(fullmodname)
2022-07-21T08:41:14.278031337Z: [INFO] File "/usr/local/lib/python3.6/importlib/__init__.py", line 126, in import_module
2022-07-21T08:41:14.278277039Z: [INFO] return _bootstrap._gcd_import(name[level:], package, level)
2022-07-21T08:41:14.278289939Z: [INFO] File "<frozen importlib._bootstrap>", line 994, in _gcd_import
2022-07-21T08:41:14.278294939Z: [INFO] File "<frozen importlib._bootstrap>", line 971, in _find_and_load
2022-07-21T08:41:14.278298639Z: [INFO] File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
2022-07-21T08:41:14.278302439Z: [INFO] File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
2022-07-21T08:41:14.278305939Z: [INFO] File "<frozen importlib._bootstrap_external>", line 678, in exec_module
2022-07-21T08:41:14.278309639Z: [INFO] File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
2022-07-21T08:41:14.278313239Z: [INFO] File "/home/site/wwwroot/AllCurveApi/__init__.py", line 9, in <module>
2022-07-21T08:41:14.278317039Z: [INFO] import pyodbc
2022-07-21T08:41:14.278320439Z: [INFO]
2022-07-21T08:41:14.278554841Z: [INFO] at Microsoft.Azure.WebJobs.Script.Description.WorkerFunctionInvoker.InvokeCore(Object[] parameters, FunctionInvocationContext context) in /src/azure-functions-host/src/WebJobs.Script/Description/Workers/WorkerFunctionInvoker.cs:line 96
2022-07-21T08:41:14.278568241Z: [INFO] at Microsoft.Azure.WebJobs.Script.Description.FunctionInvokerBase.Invoke(Object[] parameters) in /src/azure-functions-host/src/WebJobs.Script/Description/FunctionInvokerBase.cs:line 82
2022-07-21T08:41:14.278583841Z: [INFO] at Microsoft.Azure.WebJobs.Script.Description.FunctionGenerator.Coerce[T](Task`1 src) in /src/azure-functions-host/src/WebJobs.Script/Description/FunctionGenerator.cs:line 225
[...] Then it goes for many many lines, I'm not sure it's interesting
And here’s an example of a python file, the error triggers on line 9, import pyodbc
:
import simplejson as json
import azure.functions as func
from azure.keyvault import KeyVaultClient
from azure.common.credentials import ServicePrincipalCredentials
from datetime import datetime
import os
import pyodbc
import logging
# And then code
To me it looks like the server has difficulties accessing some Python resources or dependencies, it has to do with libpython3.6
but at this point I’m not sure what to do on the Azure Portal to fix the problem.
2
Answers
We had the exact same issue on Friday. What worked for us was to replace pyodbc with pypyodbc. We did this so that we didn’t have to change it in our code:
Also, we upgraded our Azure Functions to use Python 3.7 (will probably update to 3.9 soon). Azure will not be supporting Python 3.6 as of September 30, 2022 anyways: https://azure.microsoft.com/en-us/updates/azure-functions-support-for-python-36-is-ending-on-30-september-2022/
I was facing the same issue last Thursday. However, we have tried most of the solutions which are available on Internet but none of them help us.
And in the end, we have just updated Azure Function Runtime Python 3.6 to 3.7 and Boomm.. it’s working.
Moreover, we have also noticed that when we tried to create new Azure Function App based on Linux, that time were not able to select Python3.6 as runtime stack.
Thanks again guys.