写了个定时下载文件的后台任务,只要我reload代码,定时任务就会停掉这个下载任务,1000MB的文件下到一半,咔嚓停了,怎么解决?
设置config/server.php stop_timeout 为一个较大的值例如60。这样执行reload的时候如果进程当前任务没执行完会继续等待60秒,60秒仍然没完成执行kill操作。
它是 不接受新的请求了吧 然后把当前任务处理完重启 是吧
我后台下载任务可能要下1个小时,那stop_timeout设置1个小时,他是这个任务等待1小时强制结束,会不会影响其他代码的reload,其他代码的修改不会1小时后生效吧
下载断点续传
下载不是那种直接的url文件名,而是转发的,我请求一个地址,他验证之后,再返一个文件流给我,也没告诉我文件总大小,这种怎么断点续传
这种是不是应该 单独用队列处理 像这种任务 我都单独部署一个webman 项目 里面 redis 队列 然后处理 也不重启这部分代码
我觉得楼上方式更可靠,download任务不需要经常更新,可以另启服务,要不然呢........
这种最好是分出来 和其他业务区分开,这中不能重启的 就不要动了 其他的爱咋弄咋弄
关键这只是一个下载的微服务,不牵扯主要业务逻辑,非必要不应该重启,再说重启也必须要有log
嗯嗯
不支持下载断点续传,无法确定下载时长,解决方案是如何避免重启,而不是重启后如何恢复继续下载服务
没毛病,webman这种框架 最好不要总重启,fpm 那种不需要重启的 就随便了
设置config/server.php stop_timeout 为一个较大的值例如60。这样执行reload的时候如果进程当前任务没执行完会继续等待60秒,60秒仍然没完成执行kill操作。
它是 不接受新的请求了吧 然后把当前任务处理完重启 是吧
我后台下载任务可能要下1个小时,那stop_timeout设置1个小时,他是这个任务等待1小时强制结束,会不会影响其他代码的reload,其他代码的修改不会1小时后生效吧
下载断点续传
下载不是那种直接的url文件名,而是转发的,我请求一个地址,他验证之后,再返一个文件流给我,也没告诉我文件总大小,这种怎么断点续传
这种是不是应该 单独用队列处理 像这种任务 我都单独部署一个webman 项目 里面 redis 队列 然后处理 也不重启这部分代码
我觉得楼上方式更可靠,download任务不需要经常更新,可以另启服务,要不然呢........
这种最好是分出来 和其他业务区分开,这中不能重启的 就不要动了 其他的爱咋弄咋弄
关键这只是一个下载的微服务,不牵扯主要业务逻辑,非必要不应该重启,再说重启也必须要有log
嗯嗯
不支持下载断点续传,无法确定下载时长,解决方案是如何避免重启,而不是重启后如何恢复继续下载服务
没毛病,webman这种框架 最好不要总重启,fpm 那种不需要重启的 就随便了