#python #django
#python #django
Вопрос:
Я создал простое веб-приложение погоды в Django, используя API. Ведение журнала включено и записывается в файлы в Windows. Я хочу, чтобы ведение журнала было асинхронным, то есть в конце выполнения. Как мы можем выполнить асинхронное ведение журнала в Django?
Комментарии:
1. Что это
at the end of execution
значит? Приведите пример.2. В конце выполнения вызова api
3. то есть после отображения представления пользователю запись журнала в файл журнала. В настоящее время он записывает журнал в обычном режиме, поскольку ведение журнала работает
4. Если вы хотите записать журнал после создания ответа, используйте промежуточное программное обеспечение.
5. как это использовать?
Ответ №1:
Мы можем создавать асинхронные представления только в Django. Существует пакет Python Logstash, который имеет асинхронный способ ведения журнала, но он хранит журналы в базе данных в удаленном экземпляре. (Альтернативой этому является хранение журналов в SQLLite3 db). Опция ведения журнала файлов в нем отсутствует.
Более того, async является новичком в Django, и в нем все еще остается много нерешенных сложностей. Это может привести к перегрузке памяти, что может привести к снижению производительности. Пожалуйста, найдите несколько ссылок ниже для справки.
https://pypi.org/project/python-logstash/
https://docs.djangoproject.com/en/3.1/topics/async/#:~:text=New in Django 3.0.,have efficient long-running requests.
https://deepsource.io/blog/django-async-support/
Ответ №2:
вы можете использовать logging
модуль из стандартной библиотеки python
import logging
logger = logging.getLogger(__name__)
# Set file as output
handler = logging.StreamHandler()
# Formatter template
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
# add a formatter to handler
handler.setFormatter(formatter)
# add a handler to logger
logger.addHandler(handler)
# your messages will be added to the file
logger.error("it's error message")
logger.info("it's info message")
logger.warning("it's warning message")
Официальная документация: https://docs.python.org/3/library/logging.html
Надеюсь, я вам помог!)
Комментарии:
1. Этот код будет записывать журналы в файл, работая как
2. да, он просто записывает журналы в файл, который я уже сделал. Но я хочу, чтобы журналы записывались в файл в конце, то есть после отображения представления, определенного в views.py досье.
3. вы хотите, чтобы весь поток django был записан в файл?
Ответ №3:
Я могу посоветовать вам начать проект django следующим образом. Минусы: ничего не будет выводиться на консоль, но это будет работать быстрее, чем в промежуточном программном обеспечении
nohup python manage.py runserver > file.log