Try 0
Browse files- backend/runner/app.py +12 -5
- frontend/js/artefact-context.js +1 -4
backend/runner/app.py
CHANGED
|
@@ -84,6 +84,10 @@ CORS(app, resources={
|
|
| 84 |
}
|
| 85 |
})
|
| 86 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 87 |
# Thread pool to handle background inference tasks
|
| 88 |
# Reduce workers for HF Spaces memory constraints
|
| 89 |
max_workers = int(os.getenv("MAX_WORKERS", "2")) # Default to 2 for HF Spaces
|
|
@@ -561,11 +565,8 @@ def serve_marker_image(work_id: str, filename: str):
|
|
| 561 |
|
| 562 |
|
| 563 |
# --------------------------------------------------------------------------- #
|
| 564 |
-
|
| 565 |
-
|
| 566 |
-
port = int(os.getenv("PORT", 7860)) # Default to 7860 for HF Spaces
|
| 567 |
-
app.run(host="0.0.0.0", port=port, debug=False)
|
| 568 |
-
|
| 569 |
@app.errorhandler(413) # Payload too large
|
| 570 |
def too_large(e):
|
| 571 |
return jsonify({"error": "File too large for HF Spaces"}), 413
|
|
@@ -573,3 +574,9 @@ def too_large(e):
|
|
| 573 |
@app.errorhandler(500)
|
| 574 |
def internal_error(e):
|
| 575 |
return jsonify({"error": "Internal server error"}), 500
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 84 |
}
|
| 85 |
})
|
| 86 |
|
| 87 |
+
# Configure port for HF Spaces
|
| 88 |
+
if os.getenv("PORT"):
|
| 89 |
+
app.config['SERVER_NAME'] = f"0.0.0.0:{os.getenv('PORT')}"
|
| 90 |
+
|
| 91 |
# Thread pool to handle background inference tasks
|
| 92 |
# Reduce workers for HF Spaces memory constraints
|
| 93 |
max_workers = int(os.getenv("MAX_WORKERS", "2")) # Default to 2 for HF Spaces
|
|
|
|
| 565 |
|
| 566 |
|
| 567 |
# --------------------------------------------------------------------------- #
|
| 568 |
+
# Error Handlers #
|
| 569 |
+
# --------------------------------------------------------------------------- #
|
|
|
|
|
|
|
|
|
|
| 570 |
@app.errorhandler(413) # Payload too large
|
| 571 |
def too_large(e):
|
| 572 |
return jsonify({"error": "File too large for HF Spaces"}), 413
|
|
|
|
| 574 |
@app.errorhandler(500)
|
| 575 |
def internal_error(e):
|
| 576 |
return jsonify({"error": "Internal server error"}), 500
|
| 577 |
+
|
| 578 |
+
# --------------------------------------------------------------------------- #
|
| 579 |
+
if __name__ == "__main__": # invoked via python -m …
|
| 580 |
+
# Use PORT environment variable for Hugging Face Spaces
|
| 581 |
+
port = int(os.getenv("PORT", 7860)) # Default to 7860 for HF Spaces
|
| 582 |
+
app.run(host="0.0.0.0", port=port, debug=False)
|
frontend/js/artefact-context.js
CHANGED
|
@@ -346,7 +346,6 @@ $(document).ready(function () {
|
|
| 346 |
if (file) {
|
| 347 |
const reader = new FileReader();
|
| 348 |
reader.onload = function (e) {
|
| 349 |
-
// REMOVED: saveCurrentImageToHistory(); // Save current image before loading new one
|
| 350 |
$('#uploadedImage').attr('src', e.target.result).removeClass('d-none');
|
| 351 |
$('#uploadTrigger').addClass('d-none');
|
| 352 |
$('.card:has(#uploadTrigger)').addClass('d-none');
|
|
@@ -354,7 +353,7 @@ $(document).ready(function () {
|
|
| 354 |
$('#workingOverlay').removeClass('d-none');
|
| 355 |
$('#imageTools').removeClass('d-none');
|
| 356 |
|
| 357 |
-
//
|
| 358 |
$('#uploadedImage').on('load', function() {
|
| 359 |
fetchPresign();
|
| 360 |
});
|
|
@@ -391,7 +390,6 @@ $(document).ready(function () {
|
|
| 391 |
if (file && file.type.startsWith('image/')) {
|
| 392 |
const reader = new FileReader();
|
| 393 |
reader.onload = function (e) {
|
| 394 |
-
// REMOVED: saveCurrentImageToHistory(); // Save current image before loading new one
|
| 395 |
$('#uploadedImage').attr('src', e.target.result).removeClass('d-none');
|
| 396 |
$('#uploadTrigger').addClass('d-none');
|
| 397 |
$('#workingOverlay').removeClass('d-none');
|
|
@@ -414,7 +412,6 @@ $(document).ready(function () {
|
|
| 414 |
// Handle selection of an example image
|
| 415 |
$('#selectImageBtn').on('click', function () {
|
| 416 |
if (selectedSrc) {
|
| 417 |
-
// REMOVED: saveCurrentImageToHistory(); // Save current image before loading new one
|
| 418 |
$('#uploadedImage').attr('src', selectedSrc).removeClass('d-none');
|
| 419 |
$('#uploadTrigger').addClass('d-none');
|
| 420 |
$('.card:has(#uploadTrigger)').addClass('d-none');
|
|
|
|
| 346 |
if (file) {
|
| 347 |
const reader = new FileReader();
|
| 348 |
reader.onload = function (e) {
|
|
|
|
| 349 |
$('#uploadedImage').attr('src', e.target.result).removeClass('d-none');
|
| 350 |
$('#uploadTrigger').addClass('d-none');
|
| 351 |
$('.card:has(#uploadTrigger)').addClass('d-none');
|
|
|
|
| 353 |
$('#workingOverlay').removeClass('d-none');
|
| 354 |
$('#imageTools').removeClass('d-none');
|
| 355 |
|
| 356 |
+
// Wait for image to load before proceeding
|
| 357 |
$('#uploadedImage').on('load', function() {
|
| 358 |
fetchPresign();
|
| 359 |
});
|
|
|
|
| 390 |
if (file && file.type.startsWith('image/')) {
|
| 391 |
const reader = new FileReader();
|
| 392 |
reader.onload = function (e) {
|
|
|
|
| 393 |
$('#uploadedImage').attr('src', e.target.result).removeClass('d-none');
|
| 394 |
$('#uploadTrigger').addClass('d-none');
|
| 395 |
$('#workingOverlay').removeClass('d-none');
|
|
|
|
| 412 |
// Handle selection of an example image
|
| 413 |
$('#selectImageBtn').on('click', function () {
|
| 414 |
if (selectedSrc) {
|
|
|
|
| 415 |
$('#uploadedImage').attr('src', selectedSrc).removeClass('d-none');
|
| 416 |
$('#uploadTrigger').addClass('d-none');
|
| 417 |
$('.card:has(#uploadTrigger)').addClass('d-none');
|