...
As shown, the color of the output can also be customized. Whenever a POST is done for some submitted job (via the hash), the stored JSON for that job is updated only for what is posted. One value of this JSON is counters, along with others like
lsf_id, job_database_id, status and so on.
The following example scripts live at /reg/g/psdm/web/ws/test/apps/release/logbk_batch_client/test/submit.sh and /reg/g/psdm/web/ws/test/apps/release/logbk_batch_client/test/submit.py.
The script that the hash corresponds to is the one that submits the job via the bsub command. This script is shown below.Below is a simple example of a possible bash script. This script runs test.py
and passes it any arguments that is passed to itself through "$@"
and the log files are save in the logs
directory with their job ID as the log file name. The python code can do analysis on the run this script was applied to
Code Block |
---|
#!/bin/bash ABS_PATH=/reg/g/psdm/web/ws/test/apps/logbk_batch_client/test bsub -q psdebugq -o LOG$ABS_DIRECTORYPATH/logs/%J.log python test$ABS_PATH/submit.py "$@" |
This script will run the batch job on psdebugq and store the log files in /reg/g/psdm/web/ws/test/apps/release/logbk_batch_client/test/logs/<lsf_id>. Also, it will pass all arguments passed to it to the python script, submit.py (these would be the parameters entered in the Batch defs tab). The Python script is the code that will do analysis and whatever is necessary on the run data. Since this is just an example, the Python script, submit.py, doesn't get that involved. It is shown below.
Code Block |
---|
from time import sleep from requests import post from sys import argv from os import environ from numpy import random from string import ascii_uppercase print 'This is a test function for the batch submitting.\n' ## Fetch the URL to POST to update_url = environ.get('BATCH_UPDATE_URL') print 'The update_url is:', update_url, '\n' ## Fetch the passed arguments as passed by submit.sh params = argv print 'The parameters passed are:' for n, param in enumerate(params): print 'Param %d:' % (n + 1), param print '\n' ## Run a loop, sleep a second, then POST for i in range(10): sleep(1) rand_char = random.choice(list(ascii_uppercase)) print 'Step: %d, %s' % (i + 1, rand_char) post(update_url, json={'counters' : {'Example Counter' : [i + 1, 'red'], 'Random Char' : rand_char}}) |
The print statements print out to the run's log file. The output of submit.py
No Format |
---|
This is a test function for the batch submitting. The update_url is: http://psanaphi110:9843//ws/logbook/client_status/450 The parameters passed are: Param 1: /reg/g/psdm/web/ws/test/apps/logbk_batch_client/test/submit.py Param 2: xppi0915 Param 3: 134261 Param 4: param1 Param 5: param2 Step: 1, R Step: 2, J Step: 3, T Step: 4, P Step: 5, S Step: 6, B Step: 7, E Step: 8, K Step: 9, X Step: 10, V |