使用Python调用cron-job.org API创建定时任务时遭遇404错误求助
使用Python调用cron-job.org API创建定时任务时遭遇404错误求助
嘿,我来帮你排查这个404的问题~你遇到的404错误一般是请求的API地址不对,或者请求格式不符合平台要求,结合你的代码和cron-job.org的API规则,主要有两个核心问题:
问题1:API端点的域名和路径写错了
你当前用的api_url = "https://cron-job.org/api/1.0/user/cronjobs"有两处错误:
- 官方API的域名是
api.cron-job.org,不是主域名cron-job.org - 创建定时任务的正确POST接口是
/1.0/cronjobs,而/user/cronjobs是用来获取当前用户任务列表的GET接口,用POST请求当然会404
问题2:请求体结构不符合API规范
你把url直接塞到schedule字典里了,但按照cron-job.org的要求,HTTP请求相关的配置(比如url、请求方法)要放在request字段下,schedule只负责定时规则。另外创建任务还需要必填的name字段(任务名称)。
修正后的代码
from datetime import datetime import requests, json # 修正后的正确API端点 api_url = "https://api.cron-job.org/1.0/cronjobs" # 你的API密钥 api_key = "*******************************************" # 定时任务配置 command_url = "https://httpbin.org/json" job_name = "每日10:30请求httpbin接口" # 新增必填的任务名称 try: hour = 10 minute = 30 # 符合API要求的请求体结构 job_data = { "name": job_name, "schedule": { "minute": minute, "hour": hour, "mdays": ["*"], # 每月所有日期 "months": ["*"], # 所有月份 "wdays": ["*"], # 每周所有天数 "enabled": True }, "request": { "url": command_url, "method": "GET" # 指定请求方法,默认是GET,也可以改成POST等 } } headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json" } # 这里直接用requests的json参数,不用手动json.dumps,更简洁 response = requests.post(api_url, headers=headers, json=job_data) if response.status_code == 201: print("Cron job创建成功啦!") print("任务ID:", response.json().get("id")) else: print(f"创建失败,状态码: {response.status_code}") print("错误详情:", response.text) except Exception as e: print(f'出错啦: {e}')
额外小提示
- 如果还是有问题,可以先去cron-job.org的API文档确认最新的接口规则,或者用Postman先测试接口是否能正常调用,排除API密钥无效的可能
- 用
requests.post的json参数会自动帮你处理JSON序列化和Content-Type头,比手动json.dumps更省心
备注:内容来源于stack exchange,提问作者Oussama El Khamlichi




