This repository was archived by the owner on Jun 22, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +25
-7
lines changed
Expand file tree Collapse file tree 2 files changed +25
-7
lines changed Original file line number Diff line number Diff line change 11from __future__ import print_function # Python 2 compatibility stuff
22from builtins import range
3+ import traceback
34from io import open
45
56import gevent as gvt
@@ -254,9 +255,21 @@ def _repeated_send(ws, msg):
254255
255256def _process_message (message , ws ):
256257 if 'call' in message :
257- return_val = _exposed_functions [message ['name' ]](* message ['args' ])
258+ error_info = {}
259+ try :
260+ return_val = _exposed_functions [message ['name' ]](* message ['args' ])
261+ status = 'ok'
262+ except Exception as e :
263+ err_traceback = traceback .format_exc ()
264+ traceback .print_exc ()
265+ return_val = None
266+ status = 'error'
267+ error_info ['errorText' ] = repr (e )
268+ error_info ['errorTraceback' ] = err_traceback
258269 _repeated_send (ws , _safe_json ({ 'return' : message ['call' ],
259- 'value' : return_val }))
270+ 'status' : status ,
271+ 'value' : return_val ,
272+ 'error' : error_info ,}))
260273 elif 'return' in message :
261274 call_id = message ['return' ]
262275 if call_id in _call_return_callbacks :
Original file line number Diff line number Diff line change @@ -76,10 +76,10 @@ eel = {
7676 _call_return : function ( call ) {
7777 return function ( callback = null ) {
7878 if ( callback != null ) {
79- eel . _call_return_callbacks [ call . call ] = callback ;
79+ eel . _call_return_callbacks [ call . call ] = { resolve : callback } ;
8080 } else {
81- return new Promise ( function ( resolve ) {
82- eel . _call_return_callbacks [ call . call ] = resolve ;
81+ return new Promise ( function ( resolve , reject ) {
82+ eel . _call_return_callbacks [ call . call ] = { resolve : resolve , reject : reject } ;
8383 } ) ;
8484 }
8585 }
@@ -137,7 +137,12 @@ eel = {
137137 } else if ( message . hasOwnProperty ( 'return' ) ) {
138138 // Python returning a value to us
139139 if ( message [ 'return' ] in eel . _call_return_callbacks ) {
140- eel . _call_return_callbacks [ message [ 'return' ] ] ( message . value ) ;
140+ if ( message [ 'status' ] === 'ok' ) {
141+ eel . _call_return_callbacks [ message [ 'return' ] ] . resolve ( message . value ) ;
142+ }
143+ else if ( message [ 'status' ] === 'error' && eel . _call_return_callbacks [ message [ 'return' ] ] . reject ) {
144+ eel . _call_return_callbacks [ message [ 'return' ] ] . reject ( message [ 'error' ] ) ;
145+ }
141146 }
142147 } else {
143148 throw 'Invalid message ' + message ;
@@ -146,7 +151,7 @@ eel = {
146151 } ;
147152 } ) ;
148153 }
149- }
154+ } ;
150155
151156eel . _init ( ) ;
152157
You can’t perform that action at this time.
0 commit comments