Django 신호 파트 1
Django signal helps decoupled applications get notified when actions occur elsewhere in the framework.
이는 특정 조건이 충족되면 함수가 실행되도록 알림을 받는 것을 의미합니다. 예를 들어 데이터베이스에 새 레코드를 추가할 때 저장, 삭제 등의 작업 전후에 기능을 수행해야 하는 경우가 있습니다.
Django Signals는 우리를 위해 무엇을 할 수 있습니까? 다음 시나리오를 고려하십시오. 사용자가 많은 블로그 플랫폼이 있고 사용자가 새 기사를 게시하면 다른 모든 사용자에게 "새 기사가 추가되었습니다. 확인하십시오."와 같은 짧은 알림을 전송하여 알려야 한다고 가정합니다.
이 경우 Django 신호를 사용하여 기사가 데이터베이스에 성공적으로 저장되면 다른 모든 사용자에게 알림을 보내는 데 사용되는 기능을 알릴 수 있습니다.
Django에는 모델, 관리, HTTP 요청, 테스트 및 데이터베이스 래퍼의 다섯 가지 기본 제공 신호가 있습니다. 이러한 각 신호는 연결 및 연결 해제와 같은 신호 처리를 위한 함수 집합을 제공하는 신호 클래스의 개체입니다.
신호에는 일반적으로 사용되는 두 가지 매개변수(송신자와 수신자)가 있습니다. 우리는 신호를 보낼 사람과 신호를 받을 위치를 지정할 수 있습니다. 어떤 기능을 실행해야 합니까?
Django 신호 시리즈의 이 부분에서는 요청/응답(HTTP) 신호를 살펴보고 세부 사항을 설명하고 이를 쉽고 정확하게 활용하는 방법을 보여줍니다.
요청/응답 신호는 HTTP 요청과 함께 작동하여 요청에 대한 성능 보고서를 생성하거나 요청이 시작될 때, 완료될 때 또는 오류가 발생할 때 일부 작업을 수행하는 것과 같은 다양한 작업을 수행하는 데 사용됩니다.
요청/응답 신호:
신호로 작업하려면 수신기 기능에 '**Kwargs' 매개변수가 있어야 합니다.
#request/response signals can import statement
from django.core.signals import <#Name-Signal#>
request_started 신호:
수입 명세서:
from django.core.signals import request_started
요청이 시작되면 이 신호는 기능을 실행하는 데 사용됩니다. 예를 들어 요청이 시작되면 타이머를 시작합니다.
매개변수:
-1 보낸 사람: 기본 구성에서 request_started 신호의 보낸 사람은 WSGI입니다.
-2 Environ: 요청에 제공되는 Environ 사전
수입 명세서:
from django.core.signals import request_finished
이 신호는 요청이 완료되었을 때 기능을 실행하는 데 사용됩니다. 요청이 완료되면 타이머를 중지하려는 이전 예제를 따릅니다.
request_finished에는 하나의 매개변수가 있습니다.
-1 발신자: 위와 같음
이 신호는 요청 예외에 사용됩니다. 예를 들어 실패 로그를 텍스트 파일에 저장하려고 합니다.
수입 명세서:
from django.core.signals import got_request_exception
request_finished에는 하나의 매개변수가 있습니다.
-1 발신자: 사용하지 않음(항상 None)
-2 요청: Django 프레임워크의 HTTPRequest 클래스에서 제공하는 HTTPRequest 객체,
코드 :
import time
import logging
from django.core.signals import request_started,\
request_finished,\
got_request_exception
def started(sender, **kwargs):
global started
started = time.time()
def finished(sender, **kwargs):
total = time.time() - started
print ("Timer| %.4fs" % total)
def log(**kwargs):
logging.exception('error')
request_started.connect(started)
request_finished.connect(finished)
got_request_exception.connect.connect(log)
Reference
이 문제에 관하여(Django 신호 파트 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/amrshadid/django-signals-part-1-32ak텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)