Work with Cvent API bug fix related to rate limit.

This commit is contained in:
Scott Idem
2022-02-07 15:03:24 -05:00
parent 8d7063c116
commit 7ee782fb6a
3 changed files with 33 additions and 13 deletions

View File

@@ -14,7 +14,7 @@ from app.methods.membership_person_methods import create_membership_person_obj,
app = {}
app['client_id'] = '0oalt6dz82oSbN9ok1t7' # From Cvent Developer Portal
app['secret'] = 'gQY96qffZAuB_44k73C_hn_MHeByBS8LXHj1vPRm' # From Cvent Developer
app['secret'] = 'gQY96qffZAuB_44k73C_hn_MHeByBS8LXHj1vPRm' # From Cvent Developer Portal
api = {}
api['base_url'] = 'https://api-platform.cvent.com/ea' # Including /ea as the Cvent version. EA = Early Access
@@ -109,7 +109,7 @@ def get_contact_custom_field_list(api):
# Updated 2022-01-31
@logger_reset
def get_contact_list(external_id: str=None, email: str=None):
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.setLevel(logging.INFO) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
log.debug(locals())
get_access_token()
@@ -122,18 +122,38 @@ def get_contact_list(external_id: str=None, email: str=None):
params = {}
if external_id:
log.info(f'Looking up Cvent Contcat with External ID: {external_id}')
params['filter'] = f"deleted eq 'False' and customField.609ab766-7d79-4a9d-a72c-f126412659ee eq '{external_id}'"
elif email:
log.info(f'Looking up Cvent Contcat with Email: {email}')
params['filter'] = f"deleted eq 'False' and email eq '{email}'"
elif external_id is None:
log.info(f'Looking up Cvent Contact(s) with empty Cvent custom field for external ID.')
params['filter'] = f"deleted eq 'False' and customField.609ab766-7d79-4a9d-a72c-f126412659ee lt '1'"
else:
log.info(f'Looking up Cvent Contact(s) that have not been marked as deleted.')
params['filter'] = f"deleted eq 'False'"
resp = requests.get(url=uri, headers=api['headers'], params=params)
try_request = True
limit = 0
while try_request and limit < 3:
limit = limit + 1
resp = requests.get(url=uri, headers=api['headers'], params=params)
response_data = resp.json()
log.debug(json.dumps(response_data, indent=2, default=str))
response_data = resp.json()
log.debug(json.dumps(response_data, indent=2, default=str))
if 'message' in response_data and response_data['message'] == 'Too Many Requests':
log.warning('Hit Cvent rate limit. Sleeping for .5 seconds...')
time.sleep(.5)
else:
if 'paging' in response_data:
current_token = response_data.get('paging').get('currentToken')
total_count = response_data.get('paging').get('totalCount')
log.info(f'Found {total_count} results from Cvent Contact list')
log.debug(json.dumps(response_data.get('paging'), indent=2, default=str))
try_request = False
if 'message' in response_data and response_data['message'] == 'Too Many Requests': return False