我们在应用程序中看到了一些奇怪的行为,其中日志语句无限执行。此问题在本地和生产系统上都会发生。我们的堆栈是一个简单的uWSGI / Django堆栈,因此它似乎与uWSGI或Whiskey无关。
我们一直无法重现这个问题,有时几天没有问题就会让人头疼,但总有一个非常清晰的模式:
logger.info('Beginning download')
response = requests.get(url, stream=True)
logger.info('Downloading %s' % url)
在我们的日志中:
Beginning download
Downloading http://XXX
Downloading http://XXX
Downloading http://XXX
Downloading http://XXX
Downloading http://XXX
Downloading http://XXX
Downloading http://XXX
Downloading http://XXX
直到您手动杀死威士忌或uWSGI harakiri's。
无论您使用requests.get
,requests.post
还是其他任何方法,它似乎并不重要。
实际的网络请求似乎没有执行N
次。只是写入文件或stdout的日志是无限的时间。
修改以下是Context
中的来源它也会在代码的其他部分发生,总是在调用请求库之后。我们称之为哪个URL并不重要。我们与S3,各种社交媒体API接口,并且行为在所有类型的URL中展示。