首页 > 解决方案 > Golang 终止长时间运行的 CGO 函数

问题描述

背景

大家好,我正在研究一个读取文档文件内部然后根据其内容进一步处理它的工作人员。工作人员是用 编写的go,但是读取文档内容的代码是从供应商处采购并编写的C

我们当前与C库的集成正在使用CGO,因此我们可以直接调用函数等。

问题

当我们收到一个大文件时,读取文档内容的过程可能需要很长时间。如果这种情况同时发生在所有工作人员身上,那么它将阻止任何其他文件被处理。为了缓解这种情况,我们已经对每个客户实施了速率限制,但是,这个问题仍然会影响来自同一家公司的不同用户。

触发单客户限速时,同一公司的用户只能在上一个请求完成后才能处理他们的文件,但是,如果工作人员正在处理一个大文件,则可能需要数十分钟才能完成,这将阻止其他用户的文件被处理。

为了解决这个问题,我们希望为工作人员正在处理的每个文件实现超时。因此,如果处理时间超过阈值,我们可以终止进程,返回错误并继续处理下一个文件。

想法

让我列出一些我们必须实现的想法和挑战:

问题

基本上,我想询问其他可以解决我的问题的解决方案。如果您有任何想法,请告诉我。谢谢!

标签: goprocessipc

解决方案


推荐阅读