Stripe¶
Stripe is a popular payment gateway that allows businesses to accept payments online.
The stripe Python client has both synchronous and asynchronous methods for making requests to the Stripe API.
By default, the stripe client uses the requests package for making synchronous requests and
the httpx package for making asynchronous requests.
from stripe import StripeClient
client = StripeClient(api_key='<your_secret_key>')
# Synchronous request
client.customers.list() # uses `requests`
# Asynchronous request
async def main():
await client.customers.list_async() # uses `httpx`
if __name__ == '__main__':
import asyncio
asyncio.run(main())
You read more about this on the Configuring an HTTP Client section on the stripe repository.
Synchronous Requests¶
As mentioned, by default, stripe uses the requests package for making HTTP requests.
In this case, you'll need to call logfire.instrument_requests().
import os
import logfire
from stripe import StripeClient
logfire.configure()
logfire.instrument_requests()
client = StripeClient(api_key=os.getenv('STRIPE_SECRET_KEY'))
client.customers.list()
Note
If you use the http_client parameter to configure the stripe client to use a different HTTP client,
you'll need to call the appropriate instrumentation method.
Asynchronous Requests¶
As mentioned, by default, stripe uses the httpx package for making asynchronous HTTP requests.
In this case, you'll need to call logfire.instrument_httpx().
import asyncio
import os
import logfire
from stripe import StripeClient
logfire.configure()
logfire.instrument_httpx() # for asynchronous requests
client = StripeClient(api_key=os.getenv('STRIPE_SECRET_KEY'))
async def main():
with logfire.span('list async'):
await client.customers.list_async()
if __name__ == '__main__':
asyncio.run(main())
Note
If you use the http_client parameter to configure the stripe client to use a different HTTP client,
you'll need to call the appropriate instrumentation method.
Add logging instrumentation¶
Stripe also has a logger (logger = getLogger('stripe')) that you can instrument with Logfire.
import os
from logging import basicConfig
import logfire
from stripe import StripeClient
logfire.configure()
basicConfig(handlers=[logfire.LogfireLoggingHandler()], level='INFO')
client = StripeClient(api_key=os.getenv('STRIPE_SECRET_KEY'))
client.customers.list()
You can change the level=INFO to level=DEBUG to see even more details, like the response body.