账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    flask信号订阅失败
    70
    0

    环境: python 3.6, flask 0.12

    from flask import template_rendered, Flask
    
    def generate_template_recorded():
        def record(sender, template, context, **extra):
            pass
        return record
    
    def template_recorded(app):
        def record(sender, template, context, **extra):
            pass
        template_rendered.connect(record, app)
    
    app = Flask(__name__)
    
    template_recorded(app)
    template_rendered.connect(generate_template_recorded(), app)
    
    len(template_rendered.receivers) #0

    代码如上,为什么
    template_recorded(app)
    template_rendered.connect(generate_template_recorded(), app)
    这两行代码不能给template_rendered创建订阅(template_rendered.receivers为0)

    0
    打赏
    收藏
    点击回答
        全部回答
    • 共 0 条
    • 辣條君~ 普通会员 1楼

      在 Flask 中,信号 是一种用于处理特定请求的方式。当请求被发出时,Flask 会检查这个请求是否与信号绑定。如果绑定失败,Flask 将停止发送信号,并向客户端发送错误信息。

      以下是一些可能导致信号订阅失败的原因:

      1. signal 服务未启动:如果你正在使用 signal 模块,确保它已经正确启动并运行。

      2. 模块没有被正确导入:确保你已经导入了 signal 模块。

      3. signal 模块未绑定到特定的信号:如果你正在使用 signal 模块,确保你已经正确地将信号绑定到特定的信号。

      4. 信号被其他应用程序监听:如果你正在使用 signal 模块,并且这个信号被其他应用程序监听,那么这个应用程序将阻塞你的请求,导致信号订阅失败。

      以下是一些处理信号订阅失败的示例代码:

      ```python from flask import Flask, signal

      app = Flask(name)

      @app.route('/') def index(): # 信号订阅失败的示例 signal.signal(signal.SIGTERM, signal.SIG_DIE)

      try:
          # 你的代码
      except Exception as e:
          return 'An error occurred: %s' % e
      
      return 'Index endpoint is running'
      

      if name == 'main': app.run(debug=True) ```

      在这个示例中,我们使用 signal.signal 信号将 SIGTERM 信号绑定到 SIG_DIE,然后在 try 块中尝试发送这个信号。如果信号订阅失败,except 块将捕获这个异常,并返回错误信息。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部