【问题标题】:How can I emit from a seperate file with socketio? (flask)如何使用 socketio 从单独的文件中发出? (烧瓶)
【发布时间】:2017-02-15 10:11:35
【问题描述】:

如何允许单独的文件(在本例中为 classes.py)发出 socketio 消息?

classes.py 知道socketio 变量的知识,即使尝试直接导入它也不起作用。

请帮我解决我的问题!

这是我的代码;

app.py
from flask import Flask, render_template, redirect, url_for, request, session, send_from_directory, jsonify
from flask_socketio import SocketIO
from classes import *

app = Flask(__name__)
socketio = SocketIO(app, message_queue='redis://localhost:6379')

if __name__ == "__main__":
    app.debug = True
    socketio.run(app, port=5000, debug=True, use_reloader=True)
classes.py
from flask import Flask, request, session, redirect, url_for, jsonify
import requests, json, random, sqlite3
from flask_socketio import SocketIO

class notify:
    def __init__(self, message=None):
        socketio.emit('notification', {'message': message})

我目前的修复

  • 内部向@app.route()发送POST请求,触发socketio.emit()

【问题讨论】:

    标签: python flask socket.io


    【解决方案1】:

    它似乎有一个循环引用。 您应该将app 变量与入口点分开。

    app.py

    from flask import Flask, render_template, redirect, url_for, request, session, send_from_directory, jsonify
    from flask_socketio import SocketIO
    
    app = Flask(__name__)
    socketio = SocketIO(app, message_queue='redis://localhost:6379')
    

    classes.py

    from app import socketio
    
    class notify:
        def __init__(self, message=None):
            socketio.emit('notification', {'message': message})
    

    main.py

    from app import app, socketio
    from classes import *
    
    if __name__ == "__main__":
        app.debug = True
        socketio.run(app, port=5000, debug=True, use_reloader=True)
    

    【讨论】:

    • 现在这更有意义了。非常感谢
    • 你是一个该死的救星,我挣扎了好几个小时,因为没有错误,没有输出,所以我一直在苦苦思考为什么它不起作用!
    猜你喜欢
    • 2017-01-18
    • 2015-05-25
    • 2016-08-08
    • 1970-01-01
    • 2019-11-04
    • 1970-01-01
    • 2016-04-01
    • 2017-11-16
    • 1970-01-01
    相关资源
    最近更新 更多