AWS Glue Boto3 - 在哪里可以找到服务员名单?

Inf*_*ion 6 python amazon-web-services aws-glue

我正在尝试在 Python 脚本中启动 AWS Glue ETL 作业并检查其状态,直到作业完成。

最初我只是做了一个简单的 while 循环,等待 1 分钟并检查作业状态。一旦作业成功完成,就打破循环。在进一步研究这种方法时,我发现了一个叫做“服务员”的东西。

但问题是,尽管“get_waiter”方法可用于 Glue 客户端,但我确实看到了任何服务员。

所以当我运行这个...

s3 = boto3.client('s3')
glue = boto3.client('glue')

print('s3 waiters')
print(s3.waiter_names)
print('glue waiters')
print(glue.waiter_names)
Run Code Online (Sandbox Code Playgroud)

我明白了...

s3 waiters
[u'bucket_exists', u'bucket_not_exists', u'object_exists', u'object_not_exists']
glue waiters
[]    
Run Code Online (Sandbox Code Playgroud)

所以我想知道 AWS Glue 是否真的有服务员。如果是这样,我能找到他们吗?

我找到的一些参考资料: https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/glue.html#Glue.Client.get_waiter

https://boto3.amazonaws.com/v1/documentation/api/latest/guide/clients.html#waiters

Coi*_*ham 2

如果您想了解有关服务服务员的更多信息,可以通过三种主要方式了解更多详细信息:

  1. 检查 boto3 文档。如果某项服务有服务员,则会在那里列出该服务以及如何使用它。
  2. 正如您在问题中提到的那样,打印代码中的服务员姓名。
  3. 转到github 中的botocore 数据文件夹,检查您的特定服务以获取有关可用服务员的信息。

编辑:对于那些需要定制服务员进行胶水工作的人

import boto3
from botocore.waiter import WaiterModel
from botocore.waiter import create_waiter_with_client

client = boto3.client('glue')
waiter_name = "JobRunCompleted"
waiter_config = {
    "version": 2,
    "waiters": {
        "JobRunCompleted": {
            "operation": "GetJobRun",
            "delay": 60, # Number of seconds to delay
            "maxAttempts": 30, # Max attempts before failure
            "acceptors": [
                {
                    "matcher": "path",
                    "expected": "SUCCEEDED",
                    "argument": "JobRun.JobRunState",
                    "state": "success"
                },
                {
                    "matcher": "path",
                    "expected": "FAILED",
                    "argument": "JobRun.JobRunState",
                    "state": "failure"
                }
            ]
        }
    }
}
waiter_model = WaiterModel(waiter_config)
glue_job_run_waiter = create_waiter_with_client(waiter_name, waiter_model, client)

glue_job_run_waiter.wait(JobName='my_job_name', RunId='my_run_id')
Run Code Online (Sandbox Code Playgroud)