Databricks中Python连接Atlassian Jira超时,Postman可正常连接求解决方案
Databricks环境下Python连接Jira超时问题解决(Postman可正常连接)
问题描述
在Databricks环境中使用Python连接Atlassian Jira时遇到连接超时问题,但相同的登录凭证在Postman(Basic Auth)中可以成功连接,求可行的解决思路。
已尝试的方法
基础配置代码
jira_url="https://cloud_name_here.atlassian.net/rest/api/3/project" jira_email="xxxxx@xxx.com" jira_token="AYJDxxxxxUFD"
1. 使用jira库
from jira import JIRA jc = JIRA(options={'server': jira_url}, basic_auth=(jira_email, jira_token)) ## 此处超时 projects = jc.projects() for p in projects: print(p)
2. 使用atlassian-python-api库
from atlassian import Jira jira = Jira(url=jira_url, username=jira_email, password=jira_token, cloud=True) projects = jira.get_all_projects() ## 此处超时
3. 直接发送HTTP请求
import base64 import json import requests from requests.auth import HTTPBasicAuth auth = HTTPBasicAuth(jira_email, jira_token) headers = {"Accept": "application/json","Content-Type": "application/json"} response = requests.request("GET", jira_url, headers=headers, auth=auth) ## 此处超时 print(json.dumps(json.loads(response.text), sort_keys=True, indent=4, separators=(",", ": ")))
可行解决方案
1. 配置网络代理
Databricks集群通常处于受限网络环境,需配置代理才能访问外部服务:
- 集群初始化脚本添加代理变量:
export HTTP_PROXY=http://你的代理地址:端口 export HTTPS_PROXY=http://你的代理地址:端口 export NO_PROXY=databricks.internal,service.databricks.com - 代码中指定代理:
requests库:
jira库:proxies = { "http": "http://你的代理地址:端口", "https": "http://你的代理地址:端口", } response = requests.request("GET", jira_url, headers=headers, auth=auth, proxies=proxies)jc = JIRA( options={ 'server': jira_url, 'proxies': { 'http': 'http://你的代理地址:端口', 'https': 'http://你的代理地址:端口' } }, basic_auth=(jira_email, jira_token) )
2. 延长超时时间
默认超时阈值可能过短,尝试调整超时参数:
- requests库:
response = requests.request("GET", jira_url, headers=headers, auth=auth, timeout=30) # 设置30秒超时 - jira库:
jc = JIRA( options={ 'server': jira_url, 'timeout': 30 }, basic_auth=(jira_email, jira_token) ) - atlassian-python-api库:
jira = Jira( url=jira_url, username=jira_email, password=jira_token, cloud=True, timeout=30 )
3. 验证出站网络权限
联系Databricks管理员确认集群网络是否允许访问*.atlassian.net(443端口),可在集群中执行网络测试:
curl -v https://cloud_name_here.atlassian.net/rest/api/3/project -u "xxxxx@xxx.com:AYJDxxxxxUFD"
若curl也超时,需管理员开放出站规则。
4. 修正Jira API端点
确保jira_url使用Jira实例根地址,而非具体API路径:
# 错误写法 jira_url="https://cloud_name_here.atlassian.net/rest/api/3/project" # 正确写法 jira_url="https://cloud_name_here.atlassian.net"
错误的端点会导致库内部请求路径异常,引发超时。
内容的提问来源于stack exchange,提问作者TechShare
相关产品推荐
相关产品推荐

