Azure Functions部署Python脚本连接PostgreSQL超时问题求助
排查Azure Functions连接PostgreSQL超时问题的步骤
1. 检查PostgreSQL服务器的网络访问控制
- 若使用Azure托管的PostgreSQL,在防火墙设置中勾选允许Azure服务和资源访问此服务器;若为自建服务器,需将Azure Functions的出站IP添加到PostgreSQL的
pg_hba.conf和服务器防火墙白名单。 - 验证PostgreSQL的TCP/IP配置:登录服务器查看
postgresql.conf,确认listen_addresses设为*,port配置为5432。
2. 确认Azure Functions的网络配置
- 若Function App启用了VNet集成,需确保该VNet与PostgreSQL所在网络(VNet或公网)连通,比如配置VNet对等互联,或在PostgreSQL防火墙中允许VNet地址范围。
- 在Azure门户的Function App「概述」页面获取所有出站IP,将这些IP全部添加到PostgreSQL的防火墙白名单。
3. 验证连接字符串正确性
- 确保部署到Azure的连接字符串与本地测试一致,避免主机地址、端口、用户名、密码写错。建议将连接字符串存储在Function App的「配置->应用程序设置」中,通过
os.environ.get("POSTGRES_CONNECTION_STRING")读取,避免硬编码错误。 - 尝试用
psql命令模拟Azure Functions的出站IP测试连接,确认网络层面是否通畅。
4. 检查PostgreSQL服务状态
- 在服务器主机上执行
systemctl status postgresql(Linux环境),确认服务正常运行。 - 执行
netstat -tulpn | grep 5432,检查5432端口是否处于监听状态。
5. 排查Azure Functions运行环境限制
- 区分Function App的运行计划:消费计划出站IP动态,需依赖VNet集成或允许Azure服务访问;专用计划有固定出站IP,直接添加到防火墙即可。
- 检查是否有网络安全组(NSG)限制了Function App的出站流量到5432端口。
内容的提问来源于stack exchange,提问作者Yasir Khan
相关产品推荐
相关产品推荐

