Download scripts/serve.py from TechnoBaptist/MiniCPM5-2B-WebGPU-Pi: direct link, hf CLI and curl.
- Browser
- Download file 1.95 kB
-
https://huggingface.co/spaces/TechnoBaptist/MiniCPM5-2B-WebGPU-Pi/resolve/main/scripts/serve.py
- Command line
-
hf download hf://spaces/TechnoBaptist/MiniCPM5-2B-WebGPU-Pi/scripts/serve.py
-
curl -L -o serve.py https://huggingface.co/spaces/TechnoBaptist/MiniCPM5-2B-WebGPU-Pi/resolve/main/scripts/serve.py
1.95 kB
| """Serve the demo locally, supporting byte ranges used by model metadata probes.""" | |
| from http.server import SimpleHTTPRequestHandler, ThreadingHTTPServer | |
| from pathlib import Path | |
| import os | |
| import re | |
| os.chdir(Path(__file__).resolve().parent.parent) | |
| class Handler(SimpleHTTPRequestHandler): | |
| def send_head(self): | |
| self.byte_range=None | |
| path=Path(self.translate_path(self.path)) | |
| match=re.fullmatch(r'bytes=(\d+)-(\d*)',self.headers.get('Range','')) | |
| if match and path.is_file(): | |
| size=path.stat().st_size | |
| start=int(match[1]);end=min(int(match[2]) if match[2] else size-1,size-1) | |
| if start>=size or end<start: | |
| self.send_response(416);self.send_header('Content-Range',f'bytes */{size}');self.end_headers();return None | |
| f=path.open('rb');f.seek(start);self.byte_range=end-start+1 | |
| self.send_response(206) | |
| self.send_header('Content-Type',self.guess_type(str(path))) | |
| self.send_header('Content-Range',f'bytes {start}-{end}/{size}') | |
| self.send_header('Content-Length',str(end-start+1));self.end_headers();return f | |
| return super().send_head() | |
| def end_headers(self): | |
| self.send_header('Accept-Ranges','bytes') | |
| super().end_headers() | |
| def copyfile(self,source,outputfile): | |
| try: | |
| remaining=self.byte_range | |
| if remaining is None:return super().copyfile(source,outputfile) | |
| while remaining: | |
| data=source.read(min(1024*1024,remaining)) | |
| if not data:break | |
| outputfile.write(data);remaining-=len(data) | |
| except (BrokenPipeError,ConnectionResetError):pass | |
| def log_message(self,format,*args): | |
| if args and str(args[1]) not in ('200','206'):super().log_message(format,*args) | |
| print('Open http://127.0.0.1:8765/web/',flush=True) | |
| ThreadingHTTPServer(('127.0.0.1',8765),Handler).serve_forever() | |