我有一个node.js服务,它执行数据库请求,处理数据并将数据写入磁盘。让我们简化服务,如下所示:
Get data from database
Process data
Write result to disk
Copy files on disk to database
Call database stored function to load data
整个过程可能需要几个小时。我们希望允许最终用户在运行过程中取消该过程。
我能想到的唯一方法是在整个过程中添加几点。一旦到达其中一个点,它将检查是否发送了取消信号。如果发送了信号,则过程在此处停止。该方法的问题在于,该过程将一直运行直到到达断点。例如,数据库查询可能需要一个小时。如果对数据库启动查询后发送了取消信号,则该方法将无法停止数据库查询。
有没有更好的方法来解决问题?