Karsten Bruns
10/25/2023, 9:33 AMkapa.ai
10/25/2023, 9:34 AMHTTPStream, you can use the retry mechanism provided by the Airbyte CDK. By default, the CDK will conduct exponential backoff on the HTTP code 429 and any 5XX exceptions, and fail after 5 tries. This retry mechanism is governed by the should_retry and the backoff_time methods. You can override these methods to customize the retry behavior according to your needs. In your case, you can customize the should_retry method to retry the request when the status is "in progress". Here's a pseudo-code example: python def should_retry(self, response: requests.Response) -> bool: # Parse the response parsed_response = self.parse_response(response) # Check if the status is "in progress" if parsed_response['status'] == 'in progress': return True return False Please note that this is a pseudo-code example and you might need to adjust it according to your actual API response structure. For more information, you can refer to the [Airbyte documentation on HTTP Streams](https://docs.airbyte.com/connector-development/cdk-python/http-streams).kapa.ai
10/25/2023, 9:34 AMHTTPStream, you can use the should_retry method provided by the Airbyte CDK. This method is used to determine whether the API call should be retried based on the response. By default, the CDK will conduct exponential backoff on HTTP code 429 and any 5XX exceptions, and fail after 5 tries. However, you can override this method to customize the retry behavior based on your specific use case. In your case, you can check the status of the response in the should_retry method. If the status is "in progress", you can return True to retry the API call. Once the status changes to "done", you can return False to stop retrying. Here is an example of how you might implement this, based on the information provided in the extracts: python def should_retry(self, response: requests.Response) -> bool: """ This method is called whenever a request returns a response that is not a 2xx status. If this method returns true, then the request is retried. If it returns false, then the response is returned as is and processing continues as usual. """ # Parse the response to check the status status = response.json().get('status') # Retry the API call if the status is "in progress" if status == 'in progress': return True # Do not retry the API call if the status is "done" elif status == 'done': return False # Default retry behavior for other status codes else: return 429 <= response.status_code < 500 Please note that this is a simplified example and you might need to adjust it based on the specifics of your API. For more information on how to work with HTTP streams in Airbyte, you can refer to the [HTTP Streams documentation](https://docs.airbyte.com/connector-development/cdk-python/http-streams).Karsten Bruns
10/25/2023, 9:49 AMkapa.ai
10/25/2023, 9:50 AMHTTPStream object provided by the Airbyte CDK to handle HTTP APIs. The HTTPStream requires a URL to perform the request and instructions on how to parse the resulting response. The parse_response function instructs the stream how to parse the API response. This returns an Iterable, whose elements are each later transformed into an AirbyteRecordMessage. API routes whose response contains a single record generally have a parse_response function that return a list of just that one response. Routes that return a list, usually have a parse_response function that return the received list with all elements. The HTTPStream must describe the schema of the records it outputs using JsonSchema. The simplest way to do this is by placing a .json file per stream in the schemas directory in the generated python module. The name of the .json file must match the lower snake case name of the corresponding Stream. You can also dynamically set your schema. For more information, you can refer to the [schema docs](https://docs.airbyte.com/connector-development/cdk-python/full-refresh-stream#defining-the-streams-schema). For more details, you can refer to the [HTTP Streams documentation](https://docs.airbyte.com/connector-development/cdk-python/http-streams).