Output and errors

Output handling

In the command line interface, all data is written to stdout. All messages are written to stderr.

# Direct data to a file and print messages to console
elex results 2016-02-01 > data.csv

# Direct messages to a file and print data to console
elex results 2016-02-01 2> messages.csv

# Direct messages and data to individual files
elex results 2016-02-01 > data.csv 2> elex-log.txt

URLs (which typically contain the API key as a parameter), are only output when the --debug flag is specified.

Exit codes

If the elex command is successful, it closes with exit code 0.

In the command line interface, common errors are caught, logged, and the elex command exits with exit code 1.

Unknown / unexpected errors will continue to raise the normal Python exceptions with a full stacktrace. When this happens, the elex command exits with exit code 1.

Important note about future compatibility: Elex v2.1 will integrate a results caching mechanism. When results are returned from the cache and not from the API, the elex command will exit with exit code 64. To ensure future compatibility, only check for exit code 1 when trapping errors from your scripts.

Common errors

APAPIKeyError

2016-04-13 10:18:03,298 (ERROR) elex (v2.0.0) : APAPIKeyError: AP_API_KEY environment variable is not set.

This means the AP API key is not set. Set the AP_API_KEY environment variable.

If using Elex as a Python library, you will need to pass api_key to the constructor, e.g.:

election = Election(api_key='<APIKEY>', ...)

The API key is not required when calling Elex with the --data-file flag.

ConnectionError

2016-04-12 10:47:59,928 (ERROR) elex (v2.0.0) : Connection error (<requests.packages.urllib3.connection.HTTPConnection object at 0x108525588>: Failed to establish a new connection: [Errno 8] nodename nor servname provided, or not known)

This happens when the elex client cannot connect to the API. Make sure the AP_API_BASE_URL environment variable is correct and that you have network connectivity.

HTTP Error 401 - Forbidden

2016-04-12 14:37:37,470 (ERROR) elex (v2.0.0) : HTTP Error 401 - Forbidden (Invalid API key.)

These errors represent an authentication error. Typically, this is a problem with your AP API key. Make sure the AP_API_KEY environment variable is set correctly. If the problem persists, contact AP customer support.

HTTP Error 403 - Over Quota Limit

2016-04-12 10:24:01,904 (ERROR) elex (v2.0.0) : HTTP Error 403 - Over quota limit.

This means it is time to cool it and make less requests. Most AP clients have a quota of 10 requests a second.

HTTP Error 404 - Not found

2016-04-12 14:19:41,279 (ERROR) elex (v2.0.0) : HTTP Error 404 - Not Found.

This means the network connection was fine but the endpoint URL does not exist. Check AP_API_BASE_URL to make sure the URL is correct.