shelfgot commited on
Commit
3883b9d
·
verified ·
1 Parent(s): e268d40

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +36 -13
app.py CHANGED
@@ -1,3 +1,8 @@
 
 
 
 
 
1
  """
2
  FastAPI webhook server for Hugging Face Spaces
3
  Handles training requests from Vercel and sends results back via callback
@@ -37,7 +42,6 @@ app.add_middleware(
37
  allow_methods=["*"],
38
  allow_headers=["*"],
39
  )
40
-
41
  # Training state
42
  training_in_progress = False
43
  training_result = None
@@ -84,19 +88,38 @@ def run_training_async(training_data: str, callback_url: str, callback_auth_toke
84
 
85
  # Send callback to Vercel
86
  logger.info(f"Sending callback to {callback_url}...")
87
- response = requests.post(
88
- callback_url,
89
- json=callback_payload,
90
- timeout=60, # Reduced timeout since we're not generating predictions
91
- headers={'Content-Type': 'application/json'}
92
- )
93
 
94
- if response.status_code == 200:
95
- logger.info("Callback sent successfully")
96
- training_result = {'success': True, 'message': 'Training completed'}
97
- else:
98
- logger.error(f"Callback failed with status {response.status_code}: {response.text}")
99
- training_error = f"Callback failed: {response.status_code}"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
  training_result = {'success': False, 'error': training_error}
101
 
102
  except Exception as e:
 
1
+
2
+
3
+
4
+
5
+
6
  """
7
  FastAPI webhook server for Hugging Face Spaces
8
  Handles training requests from Vercel and sends results back via callback
 
42
  allow_methods=["*"],
43
  allow_headers=["*"],
44
  )
 
45
  # Training state
46
  training_in_progress = False
47
  training_result = None
 
88
 
89
  # Send callback to Vercel
90
  logger.info(f"Sending callback to {callback_url}...")
91
+ logger.info(f"Callback payload stats: accuracy={stats['accuracy']:.4f}, loss={stats['loss']:.4f}, f1_scores={list(stats['f1_scores'].keys())}")
 
 
 
 
 
92
 
93
+ try:
94
+ response = requests.post(
95
+ callback_url,
96
+ json=callback_payload,
97
+ timeout=60, # Reduced timeout since we're not generating predictions
98
+ headers={'Content-Type': 'application/json'}
99
+ )
100
+
101
+ logger.info(f"Callback response status: {response.status_code}")
102
+ logger.info(f"Callback response headers: {dict(response.headers)}")
103
+ logger.info(f"Callback response body: {response.text}")
104
+
105
+ if response.status_code == 200:
106
+ try:
107
+ response_json = response.json()
108
+ logger.info(f"Callback response JSON: {response_json}")
109
+ if response_json.get('success'):
110
+ logger.info("Callback sent successfully and processed by Vercel")
111
+ else:
112
+ logger.warning(f"Callback returned 200 but success=false: {response_json}")
113
+ except Exception as e:
114
+ logger.warning(f"Callback returned 200 but couldn't parse JSON: {e}, body: {response.text}")
115
+ training_result = {'success': True, 'message': 'Training completed'}
116
+ else:
117
+ logger.error(f"Callback failed with status {response.status_code}: {response.text}")
118
+ training_error = f"Callback failed: {response.status_code}"
119
+ training_result = {'success': False, 'error': training_error}
120
+ except requests.exceptions.RequestException as e:
121
+ logger.error(f"Callback request exception: {str(e)}", exc_info=True)
122
+ training_error = f"Callback request failed: {str(e)}"
123
  training_result = {'success': False, 'error': training_error}
124
 
125
  except Exception as e: