GatewayWorker 关闭时不触发 onWorkerStop函数

skl_TZ

启动时会调用onWorkerStart, 但关闭时不调用onWorkerStop

3052 10 0
10个回答

walkor

如何确认的onWorkerStop没有触发?

  • 暂无评论
skl_TZ

[attach]176[/attach]

  • 暂无评论
walkor

看下业务代码是否有死循环或者sleep或者是耗时的操作。exit with status 9意思是进程卡在了业务代码里面,所以无法执行onWorkerStop

  • 暂无评论
skl_TZ

Timer算不算

  • 暂无评论
walkor

同样Timer的任务有耗时阻塞也会导致进程卡住

  • 暂无评论
skl_TZ

但是我stop了之后,我查了下,进程的确退出了,而且Timer是个全局的任务,workerman启动的时候就会启动,只要workerman还运行着,Timer也必须运行着。所以就算是要关闭Timer,我得在onWorkerStop函数中关闭。

  • 暂无评论
walkor

退出了是因为进程卡在你的业务代码里面出不来,被kill掉了
也不是Timer机制的问题,是你业务代码的问题
业务代码不要有死循环、不要有sleep、不要有长时间阻塞的操作

  • skl_TZ 2015-12-07

    我测试了下,在业务代码前,直接return,也就是根本就不执行业务,还是没有调用onWorkerStop

  • walkor 2015-12-07

    可能还是哪里执行了长时间阻塞的业务。你可以下载个干净的demo试下

  • skl_TZ 2015-12-31

    我刚下了官网的Chat的demo下来,没有做任何改动,但还是没有触发onWorkerStop函数

  • walkor 2015-12-31

    是否有出现 exit with status 9 错误?

skl_TZ

出现了,这是截图

  • skl_TZ 2015-12-31

    这是官方的工程,未做任何改动

  • walkor 2015-12-31

    启动后,新开个终端,运行下status看下。你用的是mac?

skl_TZ

嗯,是mac

  • 暂无评论
walkor

看起来是你的进程都阻塞住了,我在我的mac下试下

  • 暂无评论
年代过于久远,无法发表回答
🔝