<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 101 信號機制及其使用場景詳解 ## 安裝 ```text pip install blinker ``` ## 自定義信號:自定義信號分三步,第一是定義一個信號,第二是監聽一個信號,第三是發送一個信號。 * 定義信號:定義信號需要使用到blinker這個包的Namespace類來創建一個命名空間。比如定義一個在訪問了某個視圖函數的時候的信號。示例代碼如下: ```text from blinker import Namespace # Namespace的作用:為了防止多人開發的時候,信號名字沖突的問題 mysignal = Namespace() visit_signal = mysignal.signal('visit-signal') ``` * 監聽信號:監聽信號使用singel對象的connect方法,在這個方法中需要傳遞一個函數,用來接收以后監聽到這個信號該做的事情。示例代碼如下: ```text def visit_func(sender,username): print(sender,username) ``` * 發送信號:發送信號使用singal對象的send方法,這個方法可以傳遞一些其他參數過去。示例代碼如下: ```text mysignal.send(username='angle') ``` ### signal\_demo.py ```text from flask import Flask,request,render_template from blinker import Namespace from signals import login_signal # # Namespace 命名空間 # # 1.定義信號 # namespace = Namespace() # fire_signal = namespace.signal('fire') # # # 2.監聽信號 # def fire_test(sender): # print(sender) # print("start fire") # fire_signal.connect(fire_test) # # # 3. 發送一個信號 # fire_signal.send() # 定義一個登陸的信號,以后用戶登錄進來以后就發送一個登陸信號,然后能夠監聽這個信號,然后能夠監聽這個信號,在監聽到這個信號以后,就記錄當前這個用戶登錄的信息,用信號的方式,記錄用戶的登錄信息 app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello World!' @app.route('/login/') def login(): username = request.args.get('username') if username: login_signal.send(username=username) return '登錄成功' else: return '請輸入用戶名' if __name__ == '__main__': app.run(debug=True) ``` ### signals.py ```text from blinker import Namespace from datetime import datetime from flask import request namespace = Namespace() login_signal = namespace.signal('login') # 監聽 def login_log(sender,username): # print('用戶登錄') # 記錄 用戶名,登錄時間,ip地址 username = username now = datetime.now() ip = request.remote_addr log = "登錄日志:用戶名:{},登錄時間:{},ip地址:{}\n".format(username,now,ip) print(log) with open('login_log.txt','a+',encoding='utf-8') as f: f.write(log) login_signal.connect(login_log) ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看