Несмотря на то, что вы можете сохранить это в базе данных, поскольку она действительна только в течение 90 минут, вы можете рассмотреть возможность использования хранилища данных в памяти, например Redis . Это очень просто настроить, и есть различные клиенты Python .
Redis, в частности, поддерживает время истечения, когда устанавливает значение , так что вы можете быть уверены, что оно будет храниться только в течение установленного периода времени. Конечно, вы все равно должны иметь обработку исключений на случай, если по какой-то причине ключ будет недействителен раньше.
Хотя это может привести к программной зависимости, если вы еще не используете хранилище значений ключей, из вашего вопроса не ясно, как эта библиотека предназначена для использования и, следовательно, является ли это проблемой.
Если установка другого программного обеспечения невозможна, вы можете использовать временный файл. Однако, поскольку Python tempfile , по-видимому, не поддерживает непосредственную установку имени временного файла, вам, возможно, придется обрабатывать управление файлами вручную. Например:
import os
import time
import tempfile
# 90 minutes in seconds. Setting this a little lower would
# probably be better to account for network latency.
MAX_AGE = 90 * 60
# /tmp/libname/ needs to exist for this to work; creating it
# if necessary shouldn't give you much trouble.
TOKEN_PATH = os.path.join(
tempfile.gettempdir(),
'libname',
'paypal.token',
)
def get_paypal_token():
token = None
if os.path.isfile(TOKEN_PATH):
token_age = time.time() - os.path.getmtime(TOKEN_PATH)
if token_age < MAX_AGE:
with open(TOKEN_PATH, 'r') as infile:
# You might consider a test API call to establish token validity here.
token = infile.read()
if not token:
# Get a token from the PayPal API and write it to TOKEN_PATH.
token = 'dummy'
with open(TOKEN_PATH, 'w') as outfile:
outfile.write(token)
return token
В зависимости от среды вы, возможно, захотите изучить ограничения разрешений для этого временного файла. Независимо от того, как вы сохраняете токен, этот код должен быть полезным примером. Я не был бы в восторге от того, что воткнул что-то подобное в файловую систему, но если у вас уже есть учетные данные PayPal, используемые для запроса токена на диске, запись токена во временное хранилище, вероятно, не будет большой проблемой.