|
|
|
|
|
|
|
API_TITLE = "Product Image Update" |
|
API_VERSION = "1.0.0" |
|
API_DESCRIPTION = """ |
|
## Product Image Processing |
|
|
|
Process product images with: |
|
- Background removal |
|
- Object detection |
|
- Smart cropping and padding |
|
- Base64 encoding |
|
|
|
### Endpoints: |
|
- `/api/predict` - Process single image |
|
- `/api/rb_and_crop` - Shopify webhook endpoint |
|
- `/api/batch` - Batch processing |
|
- `/health` - Health check |
|
- `/api/docs` - API documentation |
|
""" |
|
API_HOST = "0.0.0.0" |
|
API_PORT = 7860 |
|
SERVER_RELOAD = False |
|
|
|
|
|
|
|
|
|
GPU_DURATION_SHORT = 60 |
|
GPU_DURATION_MEDIUM = 90 |
|
GPU_DURATION_LONG = 120 |
|
|
|
|
|
|
|
|
|
ERROR_INVALID_PAYLOAD = "Invalid payload structure" |
|
ERROR_INVALID_FIELDS = "Invalid fields in payload" |
|
ERROR_NO_VALID_URLS = "No valid image URLs provided" |
|
ERROR_NO_PROCESSED_IMAGES = "No images were successfully processed" |
|
ERROR_MODEL_NOT_LOADED = "Models are not loaded yet" |
|
ERROR_PROCESSING_FAILED = "Image processing failed" |
|
|
|
|
|
|
|
|
|
STATUS_SUCCESS = "success" |
|
STATUS_ERROR = "error" |
|
STATUS_PARTIAL_SUCCESS = "partial_success" |
|
STATUS_PROCESSED = "processed" |
|
STATUS_NOT_PROCESSED = "not_processed" |
|
|
|
|
|
|
|
|
|
HTTP_OK = 200 |
|
HTTP_BAD_REQUEST = 400 |
|
HTTP_NOT_FOUND = 404 |
|
HTTP_METHOD_NOT_ALLOWED = 405 |
|
HTTP_UNPROCESSABLE_ENTITY = 422 |
|
HTTP_INTERNAL_SERVER_ERROR = 500 |
|
|
|
|
|
|
|
|
|
MAX_IMAGE_SIZE = 10 * 1024 * 1024 |
|
SUPPORTED_IMAGE_FORMATS = ["jpg", "jpeg", "png", "webp"] |
|
DEFAULT_PRODUCT_TYPE = "General" |
|
BATCH_SIZE = 5 |
|
DOWNLOAD_TIMEOUT = 30 |
|
PROCESSING_TIMEOUT = 120 |
|
|
|
|
|
|
|
|
|
MODEL_CACHE_DIR = "/tmp/models" |
|
USE_MIXED_PRECISION = True |
|
ENABLE_MODEL_CACHING = True |
|
|
|
|
|
|
|
|
|
LOG_LEVEL = "INFO" |
|
LOG_FORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(message)s" |
|
|
|
|
|
|
|
|
|
MAX_CONCURRENT_REQUESTS = 10 |
|
MAX_BATCH_SIZE = 20 |
|
MEMORY_CLEANUP_THRESHOLD = 80 |
|
|