Я делаю простую утилиту для обмена файлами, используя SimpleHTTPServer. Я хотел бы иметь возможность поймать, когда завершится http-передача, т.е. когда загрузка файла клиента будет завершена. Я хотел бы выполнить некоторые действия в этот момент. Это возможно?
SimpleHTTPServer, Обнаружение завершения передачи файла?
Ответы (1)
Вы можете переопределить обработчик запросов в модуле SimpleHTTPServer. Я прикрепил фрагмент ниже
from __future__ import print_function
import os
import SimpleHTTPServer
import SocketServer
class MySimpleHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
def do_GET(self):
"""Serve a GET request."""
f = self.send_head()
if f:
try:
self.copyfile(f, self.wfile)
finally:
if(os.path.isfile(self.translate_path(self.path))):
print("Log this download:", self.translate_path(self.path))
f.close()
PORT = 8000
Handler = MySimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)
print("serving at port", PORT)
httpd.serve_forever()
person
Ozan
schedule
10.09.2015
Просто для ясности: это вызовет часть
finally
, даже если клиент отключится из-за незавершенной загрузки, верно?
- person Emil Vikström; 10.09.2015
Да, ты прав. Кажется, трудно легко определить, был ли запрос полностью получен пользователем без перерыва.
- person Ozan; 10.09.2015