You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用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.postjson参数会自动帮你处理JSON序列化和Content-Type头,比手动json.dumps更省心

备注:内容来源于stack exchange,提问作者Oussama El Khamlichi

火山引擎 最新活动