如何退出
来源:18-10 实战项目总结

钧一十一
2021-11-24
做完了项目,但是发现在engine这里是for{},没有退出机制,如何在爬完数据后优雅的退出
写回答
1回答
-
ccmouse
2021-11-27
在SimpleEngine里面这比较容易,判断不再有新的request生成就行,不过ConcurrentEngine就比较困难了,因为engine不知道worker到底有没有完成它的工作。当然,要实现退出机制也是可以的,有许多方法但没有特别“完美”的方案,同学不妨思考一下有哪些方法可以实现退出。
另一种比较常用的方法是设置一个由外界触发的开关,一旦触发就优雅的停止服务,而不是说在数据爬完之后才退出。这是一个常见的需求,通常我们服务器线上版本更新就要实现这样优雅的退出。这反而比较容易,外界的触发可以是一个特殊的url网址,也可以捕获ctrl+c等。我们就在engine的for循环里,通过select侦测这个开关,如果触发了就不再给各worker发送新的request即可。
032021-11-29
相似问题