Вы должны прочитать о модуле logging
:
https://docs.python.org/2.7/tutorial/errors.html
Ниже приведен Минимальный пример того, как записать код ответа в файл.
import requests
import logging
logger = logging.getLogger()
# create a file on the desktop and store logs
file = logging.FileHandler('C:/users/User/Desktop/test.log')
formatter = logging.Formatter()
file.setFormatter(formatter)
logger.addHandler(file)
# set level of debugging
logger.setLevel(logging.DEBUG)
def visit_google():
# Connect to google
r = requests.get("https://www.google.com")
# Check status_code
status_code = r.status_code
if status_code == 200:
# Save status code along with the message
logger.debug("Able to connect to google successfully. " + str(status_code))
else:
logger.debug("Unable to connect to google. " + str(status_code))
visit_google()
Если вы откроете файл test.log на рабочем столе, вы увидите сообщение, записанное вместе с кодом состояния.
Один действительно эффективный путь состоит в том, чтобы отправить маркер наряду с запросом и сохранить список используемых маркеров. Если маркер не допустим, или маркер был уже обработан, то прерывается.
маркер может быть столь же простым как целое число постепенного увеличения, сохраненное в скрытом текстовом поле, или можно зашифровать его для увеличения безопасности. Эта функция может быть сделана более устойчивой путем генерации маркера, когда страница создается, шифруя его, затем подтверждая, что маркер был сгенерирован И не был обработан.
Включайте случайный уникальный маркер в скрытое поле формы. Затем на бэкенде, можно проверить, был ли он отправлен прежде.
Это - обычно хорошая идея, потому что она помогает Вам защитить от нападений на XSS также.
Вы могли бы также просто протестировать, была ли идентичная транзакция сделана в последней минуте (или второй, в зависимости от задержки Вашего сервера). Большинство людей не покупает две идентичных книги (или безотносительно) в течение минуты после того использовали ту же карту. Если Вы сохраняете кэш платежей по кредитной карте в последней минуте и проверяете, идентичен ли тот, который Вы собираетесь сделать, (тот же номер карты, та же сумма) одной, Вы только что сделали, возможности, Вы определите дубликат.
Я ни на что не полагался бы сторона клиента для этого. Почему бы не генерировать уникальный идентификатор для этой серверной стороны транзакции прежде, чем подарить клиенту кнопку отправки? Клиент затем должен отправить этот маркер назад, и Вы проверяете сторону сервера, что каждый маркер отправлен однажды.
маркер может, как другие люди сказали, может быть целое число постепенного увеличения (+ имя пользователя), или GUID.