Azure Python Web App尝试获取访问令牌all导致[警告]由于信号11,pid为xx的Worker被终止



在Azure中,我使用python web应用程序,并使用系统分配的托管身份访问Azure sql数据库。代码在本地运行良好。

原始代码:

azure_credentials = identity.DefaultAzureCredential()
raw_token = azure_credentials.get_token(TOKEN_URL).token.encode("utf-16-le")

结果2022-10-06T14:13:28.375074194Z[INFO azure.identity_credentials.conchined]DefaultAzureCredential从ManagedIdentity Credential获取了一个令牌2022-10-06T14:13:29.630486437Z[2022-10-06 14:13:29+0000][87][WARNING]pid为91的工人因信号11而终止2022-10-06T14:13:29.658152384Z[2022-10-06 14:13:29+0000][97][INFO]启动带有pid的工作程序:97

为什么get_token会导致线程终止?

pyodbc版本已从pyodbc==4.0.32到pyodbc==4.0.34

以下代码在4.0.34下本地运行,但在部署到azure web应用程序时终止线程而不显示错误消息。

credential = DefaultAzureCredential() # (Doesn't matter which credential)
token = credential.get_token("https://database.windows.net/.default").token.encode("UTF-16-LE")
token_struct = struct.pack(f'<I{len(token)}s', len(token), token)
SQL_COPT_SS_ACCESS_TOKEN = 1256
connString = f"Driver={{ODBC Driver 17 for SQL Server}};SERVER=myServer;DATABASE=myDatabase"
conn = pyodbc.connect(connString, attrs_before={SQL_COPT_SS_ACCESS_TOKEN: token_struct})
cursor = conn.cursor()
cursor.execute("Select * from users")

目前的解决方案是坚持使用pyodbc 4.0.32。

相关内容

  • 没有找到相关文章

最新更新