首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Celluloid::TaskTerminated:任务已终止

Celluloid::TaskTerminated:任务已终止
EN

Stack Overflow用户
提问于 2016-04-22 14:20:38
回答 1查看 156关注 0票数 0

我正在使用celluloid zmq,并且我在应用程序中连接到多个套接字。应用程序在后台保持循环侦听,但当我关闭特定套接字时,它给我这个错误"Celluloid::TaskTerminated: task I“

我将在异常时结束循环,

代码语言:javascript
复制
def puller_loop
    logger.info "polling PULL socket"
    loop {
            begin
                async.evaluate_response(pullsock.read_multipart,'PULL')
            rescue Exception => e
                break
            end
    }
end
EN

回答 1

Stack Overflow用户

发布于 2016-04-22 14:34:19

侦听器方法在套接字关闭时崩溃。您必须捕获并优雅地结束处理程序循环。

始终将套接字readwrite操作封装在rescue块中,然后在出现异常(如您提到的异常)或其他套接字错误时退出break

由于您的loop会在数据到达时触发async调用,因此rescue必须在async调用的方法中...以及loop本身。请确保在可能的情况下不要捕获Exception。我隐约确定你的错误不是Exception的子类

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36786349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档