如何用Python触发Qlik Sense任务?求步骤与示例代码
用Python触发Qlik Sense QMC任务的分步方案
前提准备
- 确认Qlik Sense服务器已启用REST API(默认开启,若未启用需在QMC的「Virtual Proxies」中配置允许API访问)
- 在QMC中生成API密钥:进入「User Directory and Users」,找到对应服务用户,生成并保存API密钥
- 安装Python依赖:执行
pip install requests
分步实现
1. 获取Qlik Sense会话令牌
调用Qlik API前需通过API密钥获取认证令牌,代码如下:
import requests from requests.packages.urllib3.exceptions import InsecureRequestWarning # 禁用SSL证书警告(仅测试环境使用,生产环境请配置合法证书) requests.packages.urllib3.disable_warnings(InsecureRequestWarning) # 核心配置参数 QLIK_SERVER = "https://your-qlik-sense-server" API_KEY = "your-generated-api-key" USER_DIRECTORY = "your-user-directory" # 示例:"INTERNAL" USER_ID = "your-service-user-id" # 发送认证请求获取会话令牌 auth_url = f"{QLIK_SERVER}/qrs/about/api-key" headers = { "Content-Type": "application/json", "X-Qlik-User": f"UserDirectory={USER_DIRECTORY};UserId={USER_ID}" } response = requests.post(auth_url, headers=headers, json={"apiKey": API_KEY}, verify=False) response.raise_for_status() # 捕获请求异常 session_token = response.headers.get('X-Qlik-Session')
2. 提取目标任务ID
在QMC中定位要触发的任务:
- 进入「Tasks」页面,找到目标任务
- 点击任务名称进入详情页,从浏览器地址栏提取任务ID(格式如
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
3. 编写代码触发任务
使用已获取的会话令牌,发送POST请求触发任务:
# 填入目标任务ID TASK_ID = "your-task-id-here" # 任务触发API端点 trigger_url = f"{QLIK_SERVER}/qrs/task/{TASK_ID}/start" # 构造触发请求头 trigger_headers = { "Content-Type": "application/json", "X-Qlik-Session": session_token, "X-Qlik-User": f"UserDirectory={USER_DIRECTORY};UserId={USER_ID}" } # 发送触发请求 trigger_response = requests.post(trigger_url, headers=trigger_headers, verify=False) trigger_response.raise_for_status() if trigger_response.status_code == 200: print(f"任务 {TASK_ID} 已成功触发") else: print(f"触发任务失败,状态码:{trigger_response.status_code}")
注意事项
- 生产环境请移除
verify=False,配置合法SSL证书验证 - 确保服务用户拥有任务执行权限(在QMC中分配「Task Administrator」或对应权限)
- 若遇权限错误,检查用户权限配置及API密钥有效性
内容的提问来源于stack exchange,提问作者James Bond
相关产品推荐
相关产品推荐

