Commit 34778ed818ed3fea1ebc4d8f80e82e19fd4beb74
1 parent
3586cfab
Exists in
master
and in
1 other branch
FileHandler now serves the complete file instead of chunks.
Showing
1 changed file
with
17 additions
and
12 deletions
Show diff stats
serve.py
@@ -182,7 +182,9 @@ class TopicHandler(BaseHandler): | @@ -182,7 +182,9 @@ class TopicHandler(BaseHandler): | ||
182 | # Based on https://bhch.github.io/posts/2017/12/serving-large-files-with-tornado-safely-without-blocking/ | 182 | # Based on https://bhch.github.io/posts/2017/12/serving-large-files-with-tornado-safely-without-blocking/ |
183 | # ---------------------------------------------------------------------------- | 183 | # ---------------------------------------------------------------------------- |
184 | class FileHandler(BaseHandler): | 184 | class FileHandler(BaseHandler): |
185 | - chunk_size = 4 * 1024 * 1024 # serve up to 4 MiB multiple times | 185 | + SUPPORTED_METHODS = ['GET'] |
186 | + | ||
187 | + # chunk_size = 4 * 1024 * 1024 # serve up to 4 MiB multiple times | ||
186 | 188 | ||
187 | @tornado.web.authenticated | 189 | @tornado.web.authenticated |
188 | async def get(self, filename): | 190 | async def get(self, filename): |
@@ -203,17 +205,20 @@ class FileHandler(BaseHandler): | @@ -203,17 +205,20 @@ class FileHandler(BaseHandler): | ||
203 | # divide the file into chunks and write one chunk at a time, so | 205 | # divide the file into chunks and write one chunk at a time, so |
204 | # that the write does not block the ioloop for very long. | 206 | # that the write does not block the ioloop for very long. |
205 | with f: | 207 | with f: |
206 | - chunk = f.read(self.chunk_size) | ||
207 | - while chunk: | ||
208 | - try: | ||
209 | - self.write(chunk) # write the chunk to response | ||
210 | - await self.flush() # flush the current chunk to socket | ||
211 | - except iostream.StreamClosedError: | ||
212 | - break # client closed the connection | ||
213 | - finally: | ||
214 | - del chunk | ||
215 | - await asyncio.sleep(0) # 1 nanosecond (hack) | ||
216 | - chunk = f.read(self.chunk_size) | 208 | + self.write(f.read()) |
209 | + await self.flush() | ||
210 | + | ||
211 | + # chunk = f.read(self.chunk_size) | ||
212 | + # while chunk: | ||
213 | + # try: | ||
214 | + # self.write(chunk) # write the chunk to response | ||
215 | + # await self.flush() # flush the current chunk to socket | ||
216 | + # except iostream.StreamClosedError: | ||
217 | + # break # client closed the connection | ||
218 | + # finally: | ||
219 | + # del chunk | ||
220 | + # await asyncio.sleep(0) # 1 nanosecond (hack) | ||
221 | + # chunk = f.read(self.chunk_size) | ||
217 | 222 | ||
218 | 223 | ||
219 | # ---------------------------------------------------------------------------- | 224 | # ---------------------------------------------------------------------------- |