@@ -188,64 +188,64 @@ def serveContent(self, trans):
188188
189189 filename = self .filename (trans )
190190 try :
191+ # pylint: disable=consider-using-with
191192 f = open (filename , 'rb' )
192193 except IOError as e :
193194 raise HTTPExceptions .HTTPNotFound from e
194-
195- stat = os .fstat (f .fileno ())
196- fileSize , mtime = stat [6 ], stat [8 ]
197-
198- if debug :
199- print ('>> UnknownFileType.serveContent()' )
200- print ('>> filename =' , filename )
201- print ('>> size=' , fileSize )
202- fileDict = fileCache .get (filename )
203- if fileDict is not None and mtime != fileDict ['mtime' ]:
204- # Cache is out of date; clear it.
205- if debug :
206- print ('>> changed, clearing cache' )
207- del fileCache [filename ]
208- fileDict = None
209- if fileDict is None :
195+ try :
196+ stat = os .fstat (f .fileno ())
197+ fileSize , mtime = stat [6 ], stat [8 ]
210198 if debug :
211- print ('>> not found in cache' )
212- mimeType , mimeEncoding = guess_type (filename , False )
213- if mimeType is None :
214- mimeType , mimeEncoding = 'application/octet-stream' , None
215- else :
216- mimeType = fileDict ['mimeType' ]
217- mimeEncoding = fileDict ['mimeEncoding' ]
218- response .setHeader ('Content-Type' , mimeType )
219- response .setHeader ('Content-Length' , str (fileSize ))
220- if mimeEncoding :
221- response .setHeader ('Content-Encoding' , mimeEncoding )
222- if trans .request ().method () == 'HEAD' :
199+ print ('>> UnknownFileType.serveContent()' )
200+ print ('>> filename =' , filename )
201+ print ('>> size=' , fileSize )
202+ fileDict = fileCache .get (filename )
203+ if fileDict is not None and mtime != fileDict ['mtime' ]:
204+ # Cache is out of date; clear it.
205+ if debug :
206+ print ('>> changed, clearing cache' )
207+ del fileCache [filename ]
208+ fileDict = None
209+ if fileDict is None :
210+ if debug :
211+ print ('>> not found in cache' )
212+ mimeType , mimeEncoding = guess_type (filename , False )
213+ if mimeType is None :
214+ mimeType , mimeEncoding = 'application/octet-stream' , None
215+ else :
216+ mimeType = fileDict ['mimeType' ]
217+ mimeEncoding = fileDict ['mimeEncoding' ]
218+ response .setHeader ('Content-Type' , mimeType )
219+ response .setHeader ('Content-Length' , str (fileSize ))
220+ if mimeEncoding :
221+ response .setHeader ('Content-Encoding' , mimeEncoding )
222+ if trans .request ().method () == 'HEAD' :
223+ return
224+ if (fileDict is None and self .setting ('ReuseServlets' )
225+ and self .shouldCacheContent ()
226+ and fileSize < maxCacheContentSize ):
227+ if debug :
228+ print ('>> caching' )
229+ fileDict = dict (
230+ content = f .read (),
231+ mimeType = mimeType , mimeEncoding = mimeEncoding ,
232+ mtime = mtime , size = fileSize , filename = filename )
233+ fileCache [filename ] = fileDict
234+ if fileDict is not None :
235+ if debug :
236+ print ('>> sending content from cache' )
237+ response .write (fileDict ['content' ])
238+ else : # too big or not supposed to cache
239+ if debug :
240+ print ('>> sending directly' )
241+ numBytesSent = 0
242+ while numBytesSent < fileSize :
243+ data = f .read (min (fileSize - numBytesSent , readBufferSize ))
244+ if data == '' :
245+ break # unlikely, but safety first
246+ response .write (data )
247+ numBytesSent += len (data )
248+ finally :
223249 f .close ()
224- return
225- if (fileDict is None and self .setting ('ReuseServlets' )
226- and self .shouldCacheContent ()
227- and fileSize < maxCacheContentSize ):
228- if debug :
229- print ('>> caching' )
230- fileDict = dict (
231- content = f .read (),
232- mimeType = mimeType , mimeEncoding = mimeEncoding ,
233- mtime = mtime , size = fileSize , filename = filename )
234- fileCache [filename ] = fileDict
235- if fileDict is not None :
236- if debug :
237- print ('>> sending content from cache' )
238- response .write (fileDict ['content' ])
239- else : # too big or not supposed to cache
240- if debug :
241- print ('>> sending directly' )
242- numBytesSent = 0
243- while numBytesSent < fileSize :
244- data = f .read (min (fileSize - numBytesSent , readBufferSize ))
245- if data == '' :
246- break # unlikely, but safety first
247- response .write (data )
248- numBytesSent += len (data )
249- f .close ()
250250
251251 # endregion Init et al
0 commit comments