Spaces:
Runtime error
Runtime error
| import os | |
| from flask import Flask, request, jsonify, send_file | |
| from optimum.intel.openvino.modeling_diffusion import OVStableDiffusionXLPipeline | |
| from PIL import Image | |
| import io | |
| import torch | |
| import logging | |
| from datetime import datetime | |
| # Set up logging | |
| logging.basicConfig(level=logging.INFO) | |
| logger = logging.getLogger(__name__) | |
| app = Flask(__name__) | |
| pipeline = OVStableDiffusionXLPipeline.from_pretrained( | |
| "rupeshs/hyper-sd-sdxl-1-step-openvino-int8", | |
| ov_config={"CACHE_DIR": ""}, | |
| ) | |
| def generate_image(): | |
| try: | |
| # Get parameters from request | |
| data = request.get_json() | |
| prompt = data.get('prompt', 'A futuristic cityscape at sunset, cyberpunk style, 8k') | |
| width = data.get('width', 512) | |
| height = data.get('height', 512) | |
| num_inference_steps = data.get('num_inference_steps', 1) | |
| guidance_scale = data.get('guidance_scale', 1.0) | |
| # Generate image | |
| image = pipeline( | |
| prompt=prompt, | |
| width=width, | |
| height=height, | |
| num_inference_steps=num_inference_steps, | |
| guidance_scale=guidance_scale | |
| ).images[0] | |
| # Save image to a bytes buffer | |
| img_io = io.BytesIO() | |
| image.save(img_io, 'PNG') | |
| img_io.seek(0) | |
| return send_file( | |
| img_io, | |
| mimetype='image/png', | |
| as_attachment=True, | |
| download_name='generated_image.png' | |
| ) | |
| except Exception as e: | |
| logger.error(f"Image generation failed: {str(e)}") | |
| return jsonify({'error': str(e)}), 500 | |
| def health_check(): | |
| """ | |
| Health check endpoint that returns the status of the application | |
| """ | |
| try: | |
| # Basic health check response | |
| health_status = { | |
| 'status': 'healthy', | |
| 'message': 'Application is running', | |
| 'timestamp': datetime.now().isoformat() | |
| } | |
| # Optional: Add additional checks (e.g., database connectivity) | |
| # Example: Check database connection | |
| # db_status = check_database_connection() | |
| # health_status['database'] = db_status | |
| return jsonify(health_status), 200 | |
| except Exception as e: | |
| error_response = { | |
| 'status': 'unhealthy', | |
| 'message': f'Health check failed: {str(e)}', | |
| 'timestamp': datetime.now().isoformat() | |
| } | |
| return jsonify(error_response), 500 | |
| if __name__ == '__main__': | |
| port = int(os.getenv('PORT', 7860)) | |
| app.run(host='localhost', port=port) |