【问题标题】:Make sure only one instance of event-handler is triggered at a time in socket.io确保在 socket.io 中一次只触发一个事件处理程序实例
【发布时间】:2017-05-25 18:36:00
【问题描述】:

我正在尝试构建一个调用 python 脚本的节点应用程序(需要很长时间才能运行)。用户基本上选择参数,然后单击运行触发 socket.on('python-event') 中的事件并运行python 脚本。我正在使用 sockets.io 使用从 python 获得的 stdout 流向用户发送有关 python 程序状态的实时数据。但我面临的问题是,如果用户单击运行按钮两次,则事件处理程序被触发两次并运行 2 个损坏标准输出的 python 脚本实例。如何确保一次只发生一个事件触发器,如果​​发生新事件触发器,它应该杀死前一个实例和标准输出流,然后运行新实例使用更新参数的 python 脚本。我尝试使用 socket.once() 但它只允许每个连接触发一次事件。

【问题讨论】:

    标签: python node.js sockets express socket.io


    【解决方案1】:

    我将使用作业队列来执行此类作业,将每个作业的信息存储在队列中,以便您可以取消它并获取其状态。您可以使用 kue 之类的节点模块。

    【讨论】:

    • 你能否解释一下它如何与socket.io集成
    猜你喜欢
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多