Как обработать несколько серверных сторон представлений

Вы должны прочитать о модуле 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 на рабочем столе, вы увидите сообщение, записанное вместе с кодом состояния.

33
задан Paolo Bergantino 20 October 2008 в 16:06
поделиться

4 ответа

Один действительно эффективный путь состоит в том, чтобы отправить маркер наряду с запросом и сохранить список используемых маркеров. Если маркер не допустим, или маркер был уже обработан, то прерывается.

маркер может быть столь же простым как целое число постепенного увеличения, сохраненное в скрытом текстовом поле, или можно зашифровать его для увеличения безопасности. Эта функция может быть сделана более устойчивой путем генерации маркера, когда страница создается, шифруя его, затем подтверждая, что маркер был сгенерирован И не был обработан.

30
ответ дан 27 November 2019 в 18:30
поделиться

Включайте случайный уникальный маркер в скрытое поле формы. Затем на бэкенде, можно проверить, был ли он отправлен прежде.

Это - обычно хорошая идея, потому что она помогает Вам защитить от нападений на XSS также.

10
ответ дан 27 November 2019 в 18:30
поделиться

Вы могли бы также просто протестировать, была ли идентичная транзакция сделана в последней минуте (или второй, в зависимости от задержки Вашего сервера). Большинство людей не покупает две идентичных книги (или безотносительно) в течение минуты после того использовали ту же карту. Если Вы сохраняете кэш платежей по кредитной карте в последней минуте и проверяете, идентичен ли тот, который Вы собираетесь сделать, (тот же номер карты, та же сумма) одной, Вы только что сделали, возможности, Вы определите дубликат.

8
ответ дан 27 November 2019 в 18:30
поделиться

Я ни на что не полагался бы сторона клиента для этого. Почему бы не генерировать уникальный идентификатор для этой серверной стороны транзакции прежде, чем подарить клиенту кнопку отправки? Клиент затем должен отправить этот маркер назад, и Вы проверяете сторону сервера, что каждый маркер отправлен однажды.

маркер может, как другие люди сказали, может быть целое число постепенного увеличения (+ имя пользователя), или GUID.

3
ответ дан 27 November 2019 в 18:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: