码迷,mamicode.com
首页 > 其他好文 > 详细

504 Gateway Time-out

时间:2018-03-13 01:12:52      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:函数库   就会   程序   image   消息通知   img   gateway   接口调用   读取   

  2017.12,我在公司开发与维护的iOS包内审系统在上传一个ipa包到苹果ITC后台的时候突然报了一个504错误:

技术分享图片

超时了。

  这个功能是这样的:我的服务器通过PHP的curl函数库调用公司另一台服务器(专门进行ipa包的审核与上传)的接口,那个接口中再去调用python脚本上传ipa包文件(ipa包文件已经在那台服务器上的)到苹果ITC后台,最后将ITC后台返回的结果返回给我的服务器。

  这个功能上传其他ipa包是没问题的,可是上传那个包的时候就报504了。到苹果ITC后台检查的时候发现,其实那个ipa包是上传成功了的,这是因为接口调用了上传包的python脚本之后,python脚本会一直运行直到ipa包上传完成,所以包文件的上传是没问题的,但是由于上传花费时间太长了,nginx等不了那么长的时间,所以就报504错误了。

  查看nginx配置文件发现超时限制已经达到5分钟了,一味地调大超时限制可不是好办法,那怎么办呢?最后决定做成异步的,既然nginx等不了那么久,那就不等了!Php调用python脚本之后,将脚本挂载在后台执行并将执行结果输出到文件中(即将执行指令“xxxxxxx”改为“xxxxxxx > ... &”),然后马上返回,告诉用户静待通知。那怎么获得脚本执行的结果呢?写一个定时任务,每隔1分钟就到那个服务器扫描设定目录中的文件内容,若发现已有结果则将结果返回,发rtx消息通知上传操作者,同时将已经读取结果的文件移动到另一个目录,避免重复读取,同时也可作为日志文件,方便查问题。

  异步程序运行起来之后,重新上传那个包,发现用了整整18分钟才上传完成,所以修改nginx的超时限制根本不是办法啊!就这样,异步执行程序完美解决了问题,同时也给用户带来了很好的体验,用户完成操作之后便可以先去忙其他事情,有结果了rtx就会发出通知了!

 

504 Gateway Time-out

标签:函数库   就会   程序   image   消息通知   img   gateway   接口调用   读取   

原文地址:https://www.cnblogs.com/wujuntian/p/8552446.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!