Python发布Hyper文件遇64MB大小限制问题求解
适配大体积Hyper文件的Tableau发布方案
原示例代码的问题在于将整个Hyper文件读入内存后再上传,当文件超过64MB时会触发内存限制或API单次上传大小限制。要解决这个问题,直接利用Tableau Server Client (TSC)的原生分块上传能力即可,无需手动处理分块逻辑。
修改核心代码
将原代码中读取文件内容并传入content参数的逻辑,替换为直接传入文件路径到file_path参数:
原错误写法(限制64MB以内)
import tableauserverclient as TSC # 省略认证、数据源配置等代码... with open(hyper_file_path, 'rb') as f: hyper_content = f.read() # 用内存中的文件内容上传 datasource = tableau_client.datasources.publish(datasource_item, hyper_content, mode='Overwrite')
修正后的写法(支持任意大小Hyper文件)
import tableauserverclient as TSC # 省略认证、数据源配置等代码... # 直接传入文件路径,TSC自动分块上传 datasource = tableau_client.datasources.publish(datasource_item, hyper_file_path, mode='Overwrite')
自定义分块大小(可选)
如果需要调整默认的64MB分块大小,可以通过chunk_size参数指定(单位:字节),比如设置为128MB:
datasource = tableau_client.datasources.publish( datasource_item, hyper_file_path, mode='Overwrite', chunk_size=1024 * 1024 * 128 # 128MB每块 )
关键注意事项
- 确保你的
tableauserverclient版本是最新的,旧版本可能不支持分块上传:pip install --upgrade tableauserverclient - 确认你的Tableau Server/Online版本支持分块上传(Tableau Server 2020.1及以上版本均支持)
- 上传过程中保持网络稳定,分块上传会自动重试失败的块,但极端网络波动可能需要重新触发上传
内容的提问来源于stack exchange,提问作者Nat85
相关产品推荐
相关产品推荐

