Как отслеживать запросы в Django с целым идентификатором? - PullRequest
0 голосов
/ 28 января 2019

Я разрабатываю приложение Django, в котором, когда пользователь делает POST, он создает некоторые TXT-файлы на сервере.Все текстовые файлы, созданные в запросе, имеют одинаковое целое число ID в имени, чтобы различать запросы.Например:

with the first POST --> 1_file.txt
with the second POST --> 2_file.txt 

Чтобы все функции в моем коде сервера (views.py или utils.py), которые создают текстовый файл, имели переменную function_name.counter для отслеживания времени выполнения каждой функции.(пользователем POST):

def getEmail(email):
    getEmail.counter += 1
    with open(BASE_DIR + str(getEmail.counter) + "_Email.txt", "w") as f:
        f.write('%s' % email)

getEmail.counter = 0

Но этот способ очень подвержен ошибкам, и при перезапуске Apache все .counter меняются на ноль.

Есть ли более эффективный способпреуспеть в этом?

1 Ответ

0 голосов
/ 28 января 2019

Для постоянного хранения данных обычно люди используют базы данных.Например, вы можете создать модель RequestMeta с одним IntegerField для хранения количества.Также, возможно, добавьте TextField для вашего имени или типа (email) и получите его при каждом запросе: RequestMeta.objects.get_or_create(type='email').

Или вы можете использовать функциональность Django и хранить файлы вместе с ним.Используя модели RequestFile и FileField, вы можете значительно облегчить свою жизнь.Через upload_to вы также можете легко настроить, где хранить файлы.См. документы .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...