통화 시
GoogleAdsService.search_stream
님,
스트리밍 응답 반복자가 반환됩니다. 이 반복자는
GoogleAdsService
클라이언트와 같은 범위를 사용할 수는 없습니다.
분류 오류가 있는 것을 볼 수 있습니다. gRPC Channel
객체가
열려 있는 GoogleAdsService
객체가 범위를 벗어나면 가비지로 수집됩니다.
반복 시점에 GoogleAdsService
객체가 더 이상 범위 내에 있지 않은 경우
search_stream
의 결과에서 발생하는 경우 Channel
객체가 이미
제거되어 반복자가
다음 값입니다.
다음 코드는 스트리밍 반복자의 잘못된 사용을 보여줍니다.
def stream_response(client, customer_id, query):
return client.get_service("GoogleAdsService", version="v17").search_stream(customer_id, query=query)
def main(client, customer_id):
query = "SELECT campaign.name FROM campaign LIMIT 10"
response = stream_response(client, customer_id, query=query)
# Access the iterator in a different scope from where the service object was created.
try:
for batch in response:
# Iterate through response, expect undefined behavior.
위 코드에서 GoogleAdsService
객체는
반복자에 액세스할 수 있는 범위입니다. 따라서 Channel
객체가
반복자가 전체 응답을 소비하기 전에 폐기될 수 있습니다.
대신 스트리밍 반복자는
GoogleAdsService
클라이언트를 계속 사용하는 동안:
def main(client, customer_id):
ga_service = client.get_service("GoogleAdsService", version="v17")
query = "SELECT campaign.name FROM campaign LIMIT 10"
response = ga_service.search_stream(customer_id=customer_id, query=query)
# Access the iterator in the same scope as where the service object was created.
try:
for batch in response:
# Successfully iterate through response.