Skip to content

Commit

Permalink
too_many_requests backoff in client.py added
Browse files Browse the repository at this point in the history
  • Loading branch information
rdeshmukh15 committed Jun 13, 2023
1 parent a69830e commit b970331
Show file tree
Hide file tree
Showing 2 changed files with 274 additions and 18 deletions.
285 changes: 269 additions & 16 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,58 +1,311 @@
version: 2.1
orbs:
slack: circleci/[email protected]

jobs:
build:
queue:
docker:
- image: 218546966473.dkr.ecr.us-east-1.amazonaws.com/deployment-utils:0.latest
steps:
- run: deployment_utils queue

pylint-and-json-validator:
docker:
- image: 218546966473.dkr.ecr.us-east-1.amazonaws.com/circle-ci:stitch-tap-tester
steps:
- checkout
- add_ssh_keys
- run:
name: 'Setup virtual env'
command: |
python3 -mvenv /usr/local/share/virtualenvs/tap-square
python3 -m venv /usr/local/share/virtualenvs/tap-square
source /usr/local/share/virtualenvs/tap-square/bin/activate
pip install -U 'pip==22.2.2' 'setuptools==65.3.0'
pip install -U pip setuptools
pip install .[dev]
- run:
name: 'pylint tap'
command: |
source /usr/local/share/virtualenvs/tap-square/bin/activate
pylint tap_square -d 'broad-except,chained-comparison,empty-docstring,fixme,invalid-name,line-too-long,missing-class-docstring,missing-function-docstring,missing-module-docstring,no-else-raise,no-else-return,too-few-public-methods,too-many-arguments,too-many-branches,too-many-lines,too-many-locals,ungrouped-imports,wrong-spelling-in-comment,wrong-spelling-in-docstring,too-many-public-methods,missing-docstring'
- run:
name: 'JSON Validator'
command: |
source /usr/local/share/virtualenvs/tap-tester/bin/activate
stitch-validate-json tap_square/schemas/*.json
- slack/status:
channel: 'stitch-tap-tester-tests'
mentions: "${CIRCLE_USERNAME}"
fail_only: true
only_for_branches: master
failure_message: |
:face_vomiting: ${CIRCLE_JOB} failed!
all-integ-tests-running-test:
docker:
- image: 218546966473.dkr.ecr.us-east-1.amazonaws.com/circle-ci:stitch-tap-tester
steps:
- checkout
- add_ssh_keys
- run:
name: 'pylint'
name: 'All Tests Running'
command: |
aws s3 cp s3://com-stitchdata-dev-deployment-assets/environments/tap-tester/tap_tester_sandbox dev_env.sh
source dev_env.sh
source /usr/local/share/virtualenvs/tap-tester/bin/activate
python tests/test_config.py
- slack/status:
channel: 'stitch-tap-tester-tests'
mentions: "${CIRCLE_USERNAME}"
fail_only: true
only_for_branches: master
failure_message: |
:face_vomiting: ${CIRCLE_JOB} failed!
discovery-test:
docker:
- image: 218546966473.dkr.ecr.us-east-1.amazonaws.com/circle-ci:stitch-tap-tester
steps:
- checkout
- add_ssh_keys
- run:
name: 'Setup virtual env'
command: |
python3 -m venv /usr/local/share/virtualenvs/tap-square
source /usr/local/share/virtualenvs/tap-square/bin/activate
pylint tap_square -d C,R,W
pip install -U 'pip<19.2' 'setuptools<51.0.0'
pip install .[dev]
- run:
name: 'Test Discovery'
command: |
aws s3 cp s3://com-stitchdata-dev-deployment-assets/environments/tap-tester/tap_tester_sandbox dev_env.sh
source dev_env.sh
source /usr/local/share/virtualenvs/tap-tester/bin/activate
pip install 'squareup==5.3.0.20200528'
run-test --tap=tap-square tests/test_discovery.py
- slack/status:
channel: 'stitch-tap-tester-tests'
mentions: "${CIRCLE_USERNAME}"
fail_only: true
only_for_branches: master
failure_message: |
:face_vomiting: ${CIRCLE_JOB} failed!
sync-canary-test:
docker:
- image: 218546966473.dkr.ecr.us-east-1.amazonaws.com/circle-ci:stitch-tap-tester
steps:
- checkout
- add_ssh_keys
- store_test_results:
path: test_output/report.xml
- store_artifacts:
path: htmlcov
- run:
name: 'Integration Tests'
name: 'Setup virtual env'
command: |
python3 -m venv /usr/local/share/virtualenvs/tap-square
source /usr/local/share/virtualenvs/tap-square/bin/activate
pip install -U 'pip<19.2' 'setuptools<51.0.0'
pip install .[dev]
- run:
name: 'Testing Sync Canary'
command: |
aws s3 cp s3://com-stitchdata-dev-deployment-assets/environments/tap-tester/tap_tester_sandbox dev_env.sh
source dev_env.sh
source /usr/local/share/virtualenvs/tap-tester/bin/activate
pip install 'squareup==5.3.0.20200528'
run-test --tap=tap-square tests/test_sync_canary.py
- slack/status:
channel: 'stitch-tap-tester-tests'
mentions: "${CIRCLE_USERNAME}"
fail_only: true
only_for_branches: master
failure_message: |
:face_vomiting: ${CIRCLE_JOB} failed!
default-start-date-test:
docker:
- image: 218546966473.dkr.ecr.us-east-1.amazonaws.com/circle-ci:stitch-tap-tester
steps:
- checkout
- add_ssh_keys
- run:
name: 'Setup virtual env'
command: |
python3 -m venv /usr/local/share/virtualenvs/tap-square
source /usr/local/share/virtualenvs/tap-square/bin/activate
pip install -U 'pip<19.2' 'setuptools<51.0.0'
pip install .[dev]
run-test --tap=tap-square tests
- run:
name: 'Testing Default Start Date'
command: |
aws s3 cp s3://com-stitchdata-dev-deployment-assets/environments/tap-tester/tap_tester_sandbox dev_env.sh
source dev_env.sh
source /usr/local/share/virtualenvs/tap-tester/bin/activate
pip install 'squareup==5.3.0.20200528'
run-test --tap=tap-square tests/test_default_start_date.py
- slack/status:
channel: 'stitch-tap-tester-tests'
mentions: "${CIRCLE_USERNAME}"
fail_only: true
only_for_branches: master
failure_message: |
:face_vomiting: ${CIRCLE_JOB} failed!
non-parallizable-tests:
docker:
- image: 218546966473.dkr.ecr.us-east-1.amazonaws.com/circle-ci:stitch-tap-tester
steps:
- checkout
- add_ssh_keys
- run:
name: 'Setup virtual env'
command: |
python3 -m venv /usr/local/share/virtualenvs/tap-square
source /usr/local/share/virtualenvs/tap-square/bin/activate
pip install -U 'pip<19.2' 'setuptools<51.0.0'
pip install .[dev]
- run:
when: always
name: 'Testing Automatic Fields'
command: |
aws s3 cp s3://com-stitchdata-dev-deployment-assets/environments/tap-tester/tap_tester_sandbox dev_env.sh
source dev_env.sh
source /usr/local/share/virtualenvs/tap-tester/bin/activate
pip install 'squareup==5.3.0.20200528'
run-test --tap=tap-square tests/test_automatic_fields.py
- run:
when: always
name: 'Testing Schema and All Fields'
command: |
aws s3 cp s3://com-stitchdata-dev-deployment-assets/environments/tap-tester/tap_tester_sandbox dev_env.sh
source dev_env.sh
source /usr/local/share/virtualenvs/tap-tester/bin/activate
pip install 'squareup==5.3.0.20200528'
run-test --tap=tap-square tests/test_all_fields.py
- run:
when: always
name: 'Testing Bookmarks for Dynamic Data Streams'
command: |
aws s3 cp s3://com-stitchdata-dev-deployment-assets/environments/tap-tester/tap_tester_sandbox dev_env.sh
source dev_env.sh
source /usr/local/share/virtualenvs/tap-tester/bin/activate
pip install 'squareup==5.3.0.20200528'
run-test --tap=tap-square tests/test_bookmarks.py
- run:
when: always
name: 'Testing Bookmarks for Static Data Streams'
command: |
aws s3 cp s3://com-stitchdata-dev-deployment-assets/environments/tap-tester/tap_tester_sandbox dev_env.sh
source dev_env.sh
source /usr/local/share/virtualenvs/tap-tester/bin/activate
pip install 'squareup==5.3.0.20200528'
run-test --tap=tap-square tests/test_bookmarks_static.py
- run:
when: always
name: 'Testing Start Date'
command: |
aws s3 cp s3://com-stitchdata-dev-deployment-assets/environments/tap-tester/tap_tester_sandbox dev_env.sh
source dev_env.sh
source /usr/local/share/virtualenvs/tap-tester/bin/activate
pip install 'squareup==5.3.0.20200528'
run-test --tap=tap-square tests/test_start_date.py
- run:
when: always
name: 'Testing Pagination'
command: |
aws s3 cp s3://com-stitchdata-dev-deployment-assets/environments/tap-tester/tap_tester_sandbox dev_env.sh
source dev_env.sh
source /usr/local/share/virtualenvs/tap-tester/bin/activate
pip install 'squareup==5.3.0.20200528'
run-test --tap=tap-square tests/test_pagination.py
- run:
when: always
name: 'Testing Cursor Bookmark'
command: |
aws s3 cp s3://com-stitchdata-dev-deployment-assets/environments/tap-tester/tap_tester_sandbox dev_env.sh
source dev_env.sh
source /usr/local/share/virtualenvs/tap-tester/bin/activate
pip install 'squareup==5.3.0.20200528'
run-test --tap=tap-square tests/test_bookmarks_cursor.py
- slack/status:
channel: 'stitch-tap-tester-tests'
mentions: "${CIRCLE_USERNAME}"
fail_only: true
only_for_branches: master
failure_message: |
:face_vomiting: ${CIRCLE_JOB} failed!
workflows:
version: 2
commit:
jobs:
- build:
context: circleci-user
- queue:
context:
- circleci-user
- tap-tester-user
- pylint-and-json-validator:
context:
- circleci-user
- tap-tester-user
requires:
- queue
- all-integ-tests-running-test:
context:
- circleci-user
- tap-tester-user
requires:
- queue
- discovery-test:
context:
- circleci-user
- tap-tester-user
requires:
- queue
- sync-canary-test:
context:
- circleci-user
- tap-tester-user
requires:
- queue
- default-start-date-test:
context:
- circleci-user
- tap-tester-user
requires:
- queue
- non-parallizable-tests:
context:
- circleci-user
- tap-tester-user
requires:
- queue
build_daily:
triggers:
- schedule:
cron: "0 19 * * *"
cron: "0 6 * * *"
filters:
branches:
only:
- master
jobs:
- build:
context: circleci-user
- pylint-and-json-validator:
context:
- circleci-user
- tap-tester-user
- all-integ-tests-running-test:
context:
- circleci-user
- tap-tester-user
- discovery-test:
context:
- circleci-user
- tap-tester-user
- sync-canary-test:
context:
- circleci-user
- tap-tester-user
- default-start-date-test:
context:
- circleci-user
- tap-tester-user
- non-parallizable-tests:
context:
- circleci-user
- tap-tester-user
7 changes: 5 additions & 2 deletions tap_square/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,8 @@ def _get_access_token(self):

if result.is_error():
error_message = result.errors if result.errors else result.body
print("-------------------")
print("result.status_code--", result.status_code)
raise RuntimeError(error_message)

return result.body['access_token']
Expand All @@ -77,7 +79,7 @@ def _get_access_token(self):
@backoff.on_exception(
backoff.expo,
RetryableError,
max_time=180, # seconds
max_time=600, # seconds
giveup=should_not_retry,
on_backoff=log_backoff,
jitter=backoff.full_jitter,
Expand All @@ -87,7 +89,8 @@ def _retryable_v2_method(request_method, body, **kwargs):

if result.is_error():
error_message = result.errors if result.errors else result.body
if 'Service Unavailable' in error_message or 'upstream connect error or disconnect/reset before headers' in error_message or result.status_code == 429:
if 'Service Unavailable' in error_message or 'upstream connect error or disconnect/reset before headers' in error_message or result.status_code == 429 \
or 'access token creation quota exceeded for merchant, please retry later' in error_message:
raise RetryableError(error_message)
else:
raise RuntimeError(error_message)
Expand Down

0 comments on commit b970331

Please sign in to comment.