forked from platypush/platypush
Doing things in a more sane way
This commit is contained in:
parent
e8c9cca433
commit
4d636386bf
1 changed files with 11 additions and 10 deletions
|
@ -69,22 +69,23 @@ def _init_plugin(plugin_name, reload=False):
|
||||||
return plugin
|
return plugin
|
||||||
|
|
||||||
|
|
||||||
def _exec_func(body, retry=True):
|
def _exec_func(args, retry=True):
|
||||||
args = {}
|
args = json.loads(args) \
|
||||||
|
if isinstance(args, str) \
|
||||||
|
else args
|
||||||
|
|
||||||
if 'action' not in body:
|
if 'action' not in args:
|
||||||
logging.warn('No action specified')
|
logging.warn('No action specified')
|
||||||
return
|
return
|
||||||
|
|
||||||
action = body.pop('action')
|
if 'target' in args:
|
||||||
|
args.pop('target')
|
||||||
|
|
||||||
|
action = args.pop('action')
|
||||||
tokens = action.split('.')
|
tokens = action.split('.')
|
||||||
module_name = str.join('.', tokens[:-1])
|
module_name = str.join('.', tokens[:-1])
|
||||||
method_name = tokens[-1:][0]
|
method_name = tokens[-1:][0]
|
||||||
|
|
||||||
args = json.loads(body) \
|
|
||||||
if isinstance(body, str) \
|
|
||||||
else body
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
plugin = _init_plugin(module_name)
|
plugin = _init_plugin(module_name)
|
||||||
except RuntimeError as e: # Module/class not found
|
except RuntimeError as e: # Module/class not found
|
||||||
|
@ -110,11 +111,11 @@ def _exec_func(body, retry=True):
|
||||||
logging.exception(e)
|
logging.exception(e)
|
||||||
if retry:
|
if retry:
|
||||||
# Put the action back where it was before retrying
|
# Put the action back where it was before retrying
|
||||||
body['action'] = action
|
args['action'] = action
|
||||||
|
|
||||||
logging.info('Reloading plugin {} and retrying'.format(module_name))
|
logging.info('Reloading plugin {} and retrying'.format(module_name))
|
||||||
_init_plugin(module_name, reload=True)
|
_init_plugin(module_name, reload=True)
|
||||||
_exec_func(body, retry=False)
|
_exec_func(args, retry=False)
|
||||||
|
|
||||||
|
|
||||||
def _on_push(ws, data):
|
def _on_push(ws, data):
|
||||||
|
|
Loading…
Reference in a new issue