溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Flask框架信號(hào)用法實(shí)例分析

發(fā)布時(shí)間:2020-10-02 02:12:25 來(lái)源:腳本之家 閱讀:100 作者:噴跑的豆子 欄目:開(kāi)發(fā)技術(shù)

本文實(shí)例講述了Flask框架信號(hào)用法。分享給大家供大家參考,具體如下:

項(xiàng)目功能復(fù)雜,代碼量越大,就越需要做業(yè)務(wù)解耦。否則在其之上做開(kāi)發(fā)和維護(hù)是很痛苦的,尤其是對(duì)于團(tuán)隊(duì)的新人。Flask從0.6開(kāi)始,通過(guò)Blinker提供了信號(hào)支持。信號(hào)就是在框架核心功能或者一些Flask擴(kuò)展發(fā)生工作時(shí)所發(fā)送的通知,用于幫助你解耦應(yīng)用。

Blinker的使用

安裝

pip install blinker

Blinker的信號(hào)與接收方式

from blinker import signal
s = signal("test start")
def each(round):
  print("each {}".format(round))
def round_two(round):
  print("round {}".format(round))
s.connect(each)
s.connect(round_two,sender=2)  # 表示值為2的時(shí)候才會(huì)接收信號(hào)
for index in range(1,4):
  s.send(index)

打印結(jié)果:

each 1
each 2
round 2
each 3

或者簡(jiǎn)寫(xiě)成:

from blinker import signal
s = signal("test start")
@s.connect
def each(round)
  print("each {}".format(round))

Flask中內(nèi)置信號(hào)

  • flask.template_rendered:模板渲染成功的時(shí)候發(fā)送,這個(gè)信號(hào)與模板實(shí)例template上下文的字典一起調(diào)用。
  • flask.request_started:建立請(qǐng)求上下文后,在請(qǐng)求處理開(kāi)始前發(fā)送,訂閱者可以用request之類(lèi)的標(biāo)準(zhǔn)代理訪(fǎng)問(wèn)請(qǐng)求。
  • flask.request_finished:在響應(yīng)發(fā)送給客戶(hù)端之前發(fā)送,可以傳遞reponse。
  • flask.got_request_exception:在請(qǐng)求處理中拋出異常時(shí)發(fā)送,異常本身會(huì)通過(guò)execption傳遞到訂閱函數(shù)。
  • flask.request_tearing_down:在請(qǐng)求銷(xiāo)毀時(shí)發(fā)送,它總是被調(diào)用,即使發(fā)生異常。
  • flask.appcontext_tearing_down:在應(yīng)用上下文銷(xiāo)毀時(shí)發(fā)送,它總是被調(diào)用,即使發(fā)生異常。

希望本文所述對(duì)大家基于flask框架的Python程序設(shè)計(jì)有所幫助。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI