CloudConvert API导入上传任务始终处于“Waiting for Upload”状态求助
CloudConvert API import/upload任务一直卡在“Waiting for Upload”状态的问题
我首次使用CloudConvert API执行HTML转PDF转换,已查阅并遵循官方文档,同时使用了官方“Job Builder”生成代码,但import/upload任务始终处于“Waiting for Upload”状态,无任何报错。待上传的main.html与Python脚本位于同一目录,原代码如下:
cloudconvert.configure(api_key='API_KEY', sandbox=False) job = cloudconvert.Job.create(payload={ "tasks": { "import-file": { "operation": "import/upload", "input": "upload", "file": "main.html" }, "convert-pdf": { "operation": "convert", "input_format": "html", "output_format": "pdf", "engine": "chrome", "input": [ "import-file" ], "zoom": 1, "print_background": True, "display_header_footer": False, "wait_until": "load", "wait_time": 0, "filename": "main.pdf" }, "output-schedule": { "operation": "export/url", "input": [ "convert-pdf" ], "inline": False, "archive_multiple_files": False } }, "tag": "jobbuilder" })
问题原因与解决方案
你的代码存在流程缺失问题:使用import/upload操作时,仅在payload中指定file参数无效,CloudConvert要求先创建任务获取上传入口,再单独上传文件内容,具体修正步骤如下:
- 创建job时,
import-file任务不需要添加file参数 - 从创建后的job响应中,提取
import-file任务的上传URL和表单参数 - 通过HTTP POST请求将文件内容上传到指定URL
- 等待job执行完成后,获取转换后的PDF链接
修正后的代码示例:
import cloudconvert import requests cloudconvert.configure(api_key='API_KEY', sandbox=False) # 创建包含上传任务的job job = cloudconvert.Job.create(payload={ "tasks": { "import-file": { "operation": "import/upload", "input": "upload" }, "convert-pdf": { "operation": "convert", "input_format": "html", "output_format": "pdf", "engine": "chrome", "input": ["import-file"], "zoom": 1, "print_background": True, "display_header_footer": False, "wait_until": "load", "wait_time": 0, "filename": "main.pdf" }, "output-schedule": { "operation": "export/url", "input": ["convert-pdf"], "inline": False, "archive_multiple_files": False } }, "tag": "jobbuilder" }) # 获取上传任务的表单信息 import_task = job['tasks']['import-file'] upload_url = import_task['result']['form']['url'] form_data = import_task['result']['form']['data'] # 上传本地文件 with open('main.html', 'rb') as f: files = {'file': f} response = requests.post(upload_url, data=form_data, files=files) response.raise_for_status() # 校验上传是否成功 # 等待job执行完成 job = cloudconvert.Job.wait(id=job['id']) # 获取转换后的PDF下载链接 export_task = job['tasks']['output-schedule'] pdf_download_url = export_task['result']['files'][0]['url'] print(f"转换完成,PDF下载链接:{pdf_download_url}")
补充说明
目前无公开信息显示CloudConvert存在大规模上传等待的平台问题,此情况基本可判定为代码流程缺失导致,按上述修正后即可正常完成文件上传与转换。
内容的提问来源于stack exchange,提问作者Jerry Will
相关产品推荐
相关产品推荐

