Spaces:
Sleeping
Sleeping
| #!/usr/bin/env python3 | |
| """ | |
| Minimal mock backend that accepts POST /update and POST /finish and prints the body. | |
| Run this, then set SYMBIOS_BACKEND_BASE_URL=http://localhost:9999 and trigger | |
| a vectorize job to see progress and finish callbacks. | |
| Usage: | |
| python scripts/mock_backend.py | |
| # or: .upload_venv/bin/python scripts/mock_backend.py | |
| """ | |
| import json | |
| from http.server import HTTPServer, BaseHTTPRequestHandler | |
| PORT = 9999 | |
| class Handler(BaseHTTPRequestHandler): | |
| def do_POST(self): | |
| length = int(self.headers.get("Content-Length", 0)) | |
| body = self.rfile.read(length) if length else b"" | |
| try: | |
| data = json.loads(body.decode()) if body else {} | |
| except Exception: | |
| data = body.decode(errors="replace") | |
| auth = self.headers.get("Authorization", "(none)") | |
| print(f"[{self.command} {self.path}] Authorization: {auth}") | |
| print(json.dumps(data, indent=2)) | |
| self.send_response(200) | |
| self.send_header("Content-Type", "application/json") | |
| self.end_headers() | |
| self.wfile.write(b'{"ok": true}\n') | |
| def log_message(self, format, *args): | |
| pass # suppress default request log; we print above | |
| def main(): | |
| server = HTTPServer(("", PORT), Handler) | |
| print(f"Mock backend listening on http://localhost:{PORT}") | |
| print(" POST /update - progress (doc_id, finished, total, message)") | |
| print(" POST /finish - completion (status, vec_id, ...)") | |
| print("Set SYMBIOS_BACKEND_BASE_URL=http://localhost:9999 and run a vectorize job.\n") | |
| server.serve_forever() | |
| if __name__ == "__main__": | |
| main() | |