You are viewing an old version of this page. View the current version.

    Compare with Current View Page History

    « Previous Version 13 Next »

    To begin we will go through a simple job submission.  In this example, we will submit a job that runs a single command (in this case, the command "hostname") on one worker.  This is the simplest form of job submission.

    Below is the code with commented explanations of its contents 

    #!/usr/bin/python
     
    # Below are required imports for the script to run
    import os, sys
     
    # The next few lines attempt to import the Qube API. If the path to the qb module
    # is not in $PATH or $PYTHONPATH, we will attempt to find it by looking in known
    # locations
    try:
        import qb
    except ImportError:
        if os.environ.get("QBDIR"):
            qbdir_api = os.path.join(os.environ.get("QBDIR"),"api","python")
        for api_path in (qbdir_api,
                         "/Applications/pfx/qube/api/python/",
                         "/usr/local/pfx/qube/api/python/",
                         "C:\\Program Files\\pfx\\qube\\api\\python",
                         "C:\\Program Files (x86)\\pfx\\qube\\api\\python"):
            if api_path not in sys.path and os.path.exists(api_path):
                sys.path.insert(0,api_path)
                try:
                    import qb
                except:
                    continue
                break
        # this should throw an exception if we've exhuasted all other possibilities
        import qb
     
    # Below is the main function to run in this script
    def main():
        
        # Below creates an empty dictionary to be filled by the following lines of code
        job = {}
        
        # Below defines the name of the Qube! job.  This is the name that will be 
        # displayed in the GUI and through the command line tools
        job['name'] = 'python test job'
        
        # Below defines how many Instances/subjobs the job is to spawn.  Because we 
        # will be running only a single command, there is no need to request more than 1. 
        job['cpus'] = 1
        
        # Below defines the internal Qube! jobtype to be used to execute the job.
        # 'cmdline' tells Qube that on the backend, we will execute a single command line 
        # command.  This will be the same as opening a terminal/command prompt and typing
        # out a command.
        job['prototype'] = 'cmdline'
         
        
        # The below parameters are explained further in the "Job submission with job 
        # package explained" page
        package = {}
        package['cmdline'] = 'hostname'
        job['package'] = package
        
        # Below creates an empty list filled by the following lines of code.
        listOfJobsToSubmit = []
        
        # Below evaluates the jobs to be submitted and adds the to the above list
        listOfJobsToSubmit.append(job)
        
        # Below calls the list of jobs to be submitted and then prints the job IDs for each
        # While it is not strictly necessary that one submits a list of jobs, it is a good
        # habit to start, so we will only submit lists of jobs.  It is, however, perfectly
        # acceptable to qb.submit(job)
        listOfSubmittedJobs = qb.submit(listOfJobsToSubmit)
        for job in listOfSubmittedJobs:
            print job['id']
     
    # Below runs the "main" function
    if __name__ == "__main__":
        main()
        sys.exit(0)

     

    This example and others like it can be found in:

    • Windows - C:\Program Files\pfx\qube\examples
    • OS X - /Application/pfx/qube/examples
    • Linux - /usr/local/pfx/qube/examples

     

    Continue to Basic python job submission II. Frames

    • No labels