确保在socket.io中一次只触发一个事件处理程序实例

时间:2017-05-25 18:36:01

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

我正在尝试构建一个调用python脚本的节点应用程序(需要花费大量时间才能运行)。用户基本上选择参数,然后单击运行触发socket.on('python-event')中的事件并运行python script.I我正在使用sockets.io使用我从python获得的stdout流向用户发送有关python程序状态的实时数据。但我面临的问题是,如果用户点击两次运行按钮, event-handdler被触发两次并运行2个python脚本实例,这会破坏stdout.How我可以确保一次只发生一个事件触发器,如果​​发生新事件触发器,它应该终止前一个实例和stdout流,然后运行新实例python脚本使用更新的参数。我尝试使用socket.once()但它只允许事件每个连接触发一次。

1 个答案:

答案 0 :(得分:0)

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