You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用ml.googleapis.com API时如何正确设置日期范围过滤条件

错误原因

  • project_id格式化语法错误:原代码中占位符写为a而非{},导致传入的项目ID没有实际生效,最终project_id值固定为错误的projects/a
  • filter参数写法不符合规范:
    • 用Python原生and运算符连接两个字符串,实际运行时只会返回第二个字符串作为filter值,两个过滤条件没有同时生效
    • 不符合Google ML API的filter语法规则:多条件需要写在同一字符串内,用大写AND连接,时间值需要用双引号包裹,建议追加Z标识为UTC时间避免时区偏移问题

正确代码示例

from googleapiclient import discovery
from googleapiclient import errors

# 正确格式化项目ID
project_id = 'projects/{}'.format('gcp-scj3-host-scj-core-01')
ml = discovery.build('ml', 'v1')

# 符合API规范的过滤条件写法
filter_str = 'createTime >= "2021-10-21T12:00:00Z" AND createTime <= "2021-10-22T12:00:00Z"'
request = ml.projects().jobs().list(parent=project_id, filter=filter_str)
response = request.execute()

# 提取所需字段
for job in response.get('jobs', []):
    job_id = job.get('jobId')
    args = job.get('trainingInput', {}).get('args', [])
    state = job.get('state')
    print(job_id, args, state)

定时任务动态日期适配方案

如果是每日运行的定时任务,可通过datetime模块自动生成对应时间段的时间字符串:

from datetime import datetime, timedelta

# 示例:取昨天0点到今天0点的UTC时间范围
end_time = datetime.utcnow().replace(hour=0, minute=0, second=0, microsecond=0)
start_time = end_time - timedelta(days=1)

# 格式化为API要求的格式
start_str = start_time.isoformat() + "Z"
end_str = end_time.isoformat() + "Z"
filter_str = f'createTime >= "{start_str}" AND createTime <= "{end_str}"'

内容的提问来源于stack exchange,提问作者Maa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 13:54:03