Skip to main content

ProActive scheduler client module

Project description

License BSD Python 3 Proactive Documentation Status

ProActive Python Client

This module allows users to interact with a running ProActive Scheduler and Resource Manager.

NOTE: To know how to use the Proactive Python Client in a more advanced way, please follow the link to see our documentation.

1. Requirements

  • Python 2 and 3

2. Installation

pip install proactive --upgrade

3. How to build

Just run gradlew clean build

This will generate the proactive-XXX.zip file inside project's dist folder.

Run pip install dist/proactive-XXX.zip to install the package in your python environment.

4. Build and run tests

./gradlew clean build -Pproactive_url=XXX -Pusername=XXX -Ppassword=XXX

Replace XXX with the respective information.

5. Usage

import os
import getpass
import proactive

print("Logging on proactive-server...")
proactive_host = 'try.activeeon.com'
proactive_port = '8080'
proactive_url  = "http://"+proactive_host+":"+proactive_port
print("Connecting on: " + proactive_url)
javaopts=[]
# uncomment for detailed logs
# javaopts.append('-Dlog4j.configuration=file:'+os.path.join(os.getcwd(),'log4j.properties'))
gateway = proactive.ProActiveGateway(proactive_url, javaopts)

gateway.connect(username="", password="")  # put your login here!
# Or uncomment the following line to protect your password
# gateway.connect(username="", password=getpass.getpass(prompt='Password: '))
assert gateway.isConnected() is True
print("Connected")

try:
    print("Creating a proactive task...")
    proactive_task = gateway.createPythonTask()
    proactive_task.setTaskName("SimplePythonTask")
    proactive_task.setTaskImplementationFromFile('main.py', ['param1', 'param2'])
    proactive_task.addInputFile('scripts/__init__.py')
    proactive_task.addInputFile('scripts/hello.py')
    
    print("Adding a fork environment to the proactive task...")
    proactive_fork_env = gateway.createDefaultForkEnvironment()
    proactive_fork_env.setImplementationFromFile("scripts/fork_env.py")
    proactive_task.setForkEnvironment(proactive_fork_env)
    
    print("Adding a selection script to the proactive task...")
    proactive_selection_script = gateway.createDefaultSelectionScript()
    proactive_selection_script.setImplementationFromFile("scripts/selection_script.py")
    proactive_task.setSelectionScript(proactive_selection_script)
    
    print("Creating a proactive job...")
    proactive_job = gateway.createJob()
    proactive_job.setJobName("SimpleJob")
    proactive_job.addTask(proactive_task)
    proactive_job.setInputFolder(os.getcwd())
    proactive_job.setOutputFolder(os.getcwd())
    
    print("Submitting the job to the proactive scheduler...")
    job_id = gateway.submitJob(proactive_job, debug=False)
    print("job_id: " + str(job_id))
    
    print("Getting job output...")
    job_result = gateway.getJobResult(job_id)
    print(job_result)

finally:
    print("Disconnecting")
    gateway.disconnect()
    print("Disconnected")
    gateway.terminate()
    print("Finished")

6. Examples

6.1 Creating a Python task

...
proactive_task = gateway.createPythonTask()
proactive_task.setTaskName("SimplePythonTask")
proactive_task.setTaskImplementation("""print("Hello world!")""")

# or by
# proactive_task.setTaskImplementationFromFile("scripts/print_python_env.py")
# proactive_task.setTaskImplementationFromLambdaFunction(lambda: 88 - 20 * 10)

# add attached files
# proactive_task.addInputFile('scripts/hello.py')

# select your python version
# proactive_task.addGenericInformation("PYTHON_COMMAND", "/usr/bin/python3")
...

6.2 Adding a fork environment

...
fork_env = gateway.createDefaultForkEnvironment()
fork_env.setImplementationFromFile("scripts/fork_env.py")

proactive_task.setForkEnvironment(fork_env)
...

6.3 Adding a selection script

...
selection_script = gateway.createDefaultSelectionScript()
selection_script.setImplementationFromFile("scripts/selection_script.py")

proactive_task.setSelectionScript(selection_script)
...

6.4 Create a job and add your task

...
proactive_job = gateway.createJob()
proactive_job.setJobName("SimpleJob")
proactive_job.addTask(proactive_task)

# for file transfer
# proactive_job.setInputFolder(os.getcwd())
# proactive_job.setOutputFolder(os.getcwd())
...

6.5 Submit your job to the scheduler

...
job_id = gateway.submitJob(proactive_job, debug=False) # set debug=True for more debug info
...

6.6 Get the job results

...
print("Getting job output...")
job_result = gateway.getJobResult(job_id)
print(job_result)
...

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

proactive-13.0.3.zip (19.7 MB view details)

Uploaded Source

File details

Details for the file proactive-13.0.3.zip.

File metadata

  • Download URL: proactive-13.0.3.zip
  • Upload date:
  • Size: 19.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.8.2 requests/2.25.1 setuptools/50.3.2 requests-toolbelt/1.0.0 tqdm/4.64.1 CPython/3.5.2

File hashes

Hashes for proactive-13.0.3.zip
Algorithm Hash digest
SHA256 eb04198d7b8a25f30e02572cdee932f123ba4449462bf56170aa780cb0fb7a7d
MD5 684462e28b4a71c0b102b201965a9cb6
BLAKE2b-256 7f4b7bcf50e81ab7c3dbf4510bf2220f75d0ee2d7c66e90e8d1f358a12e53749

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page