Library to interact with qcentroid agent api
Project description
qcentroid-agent-cli
Client library to interact with QCentroid Agent API.
Functions
Functions:
- obtain status, and context
- obtain input data
- send output data
- set status
- send execution logs
Install
pip install qcentroid-agent-cli
Use
Simple example
As easy as this:
from qcentroid_agent_cli import QCentroidSolverClient
import logging
logging.basicConfig(level=logging.DEBUG)
API_BASE_URL="https://api.qcentroid.xyz"
SOLVER_API_KEY="1234-4567-8910" # Get your solver API_KEY in the platform dashboard
SOLVER_ID="123"
def main():
# Get the solver details
solver = QCentroidSolverClient(API_BASE_URL, SOLVER_API_KEY, SOLVER_ID)
print(f"currentVersion:{QCentroidSolverClient.getVersion()}")
# Request a queued job
job = solver.obtainJob()
# Notify start of job execution
job.start()
# Retrieve the job input data
input_data = job.obtainInputData()
output_data = {}
#
# TODO: Add your solver code here and generate output_data
#
# Send the solver output data and execution logs to the platform
job.sendOutputData(output_data)
job.sendExecutionLog(logs)
# End of job execution
if __name__ == "__main__":
main()
Basic example with env variables
You can use environment variables to pass the credentials:
export QCENTROID_PUBLIC_API="https://xxxx.xxx.xxx"
export QCENTROID_AGENT_API_TOKEN="xxxx-yyyy-zzzzz"
export QCENTROID_SOLVER_ID="KJHFDKSFDG"
python main.py
main.py python example with env variables:
from qcentroid_agent_cli import QCentroidSolverClient
...
solver = QCentroidSolverClient() #No paramethers needed
...
Dotenv Basic example
Also can be used dotenv to load properties:
pip install dot-env
.env:
QCENTROID_PUBLIC_API="https://xxxx.xxx.xxx"
QCENTROID_AGENT_API_TOKEN="xxxx-yyyy-zzzzz"
QCENTROID_SOLVER_ID="KJHFDKSFDG"
from dotenv import load_dotenv
from qcentroid_agent_cli import QCentroidSolverClient
...
load_dotenv()
solver = QCentroidSolverClient() #No paramethers needed
Advanced Agent example
Simple all-in-one python example:
import requests
from qcentroid_agent_cli import QCentroidSolverClient
import logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
API_BASE_URL="https://api.qcentroid.xyz"
SOLVER_API_KEY="1234-4567-8910" # Get your solver API_KEY in the platform dashboard
SOLVER_ID="123"
def main():
exit = False
print("QCentroid Agent usage example")
print("Starting...")
# Initialize the agent and get the solver details and a valid access token
solver = QCentroidSolverClient(API_BASE_URL, SOLVER_API_KEY, SOLVER_ID)
print("Solver initialization successful.")
# Loop to request queued jobs until any exit condition you want to set
while not exit:
try:
print("Checking for pending jobs...")
# Request a queued job (the oldest one will be returned)
job = solver.obtainJob()
if job :
print("New job received.")
# There is a job to be processed!
try:
print("Processing job...")
# Notify the platform we're starting to process this job
job.start()
# Retrieve the input data
input_data = job.obtainInputData()
output_data = {}
#
# TODO: add your solver code here and generate output_data
#
print("Job processed successfully.")
# Send the solver output data to the platform
job.sendOutputData(output_data)
# Send the solver execution logs to check them thorugh the platform dashboard
# TODO: job.sendExecutionLog(logs)
job.end()
except Exception as e:
# Job execution has failed, notify the platform about the error
print("Error during job execution.")
job.error(e)
else:
# No queued jobs. Wait for 1 minute and check again
print("No pending jobs. Waiting for 1 minute...")
time.sleep(60)
except requests.RequestException as e:
# Error in an API request
# Whether parameters are incorrect (URL, api-key or solver_id), or there are connectivity issues
print(f"QCentroid Agent: API request failed: {e}")
exit=True
except Exception as e:
# Any other errors
print(f"QCentroid Agent error: {e}")
exit=True
print("End.")
if __name__ == "__main__":
main()
Own component development
Versioning
Update manually on main the pyproject.toml
the version
field to match the next release tag. Launch a new version on Releases section selecting a new tag matching the version. Create the release. The release will be published on pypi.org
Debuging locally
pip install . #install the current version of the component
python main.py #run the client version that uses the package
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
Built Distribution
Close
Hashes for qcentroid_agent_cli-0.3.35.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0a40d5a32f987cf2a8733596621c90a483980cf935b44cbedbb466bbec6cf37d |
|
MD5 | 5d9f256e54a48cbe341991b813d0c6a9 |
|
BLAKE2b-256 | 09b06eef582483debf9d9bd90b51a0ff9545ddd22a1d7d87173678d847727eb7 |
Close
Hashes for qcentroid_agent_cli-0.3.35-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3f08e6b9a023149ec98eab732a2caaed4435115bf511aa050a7d8dd1163df460 |
|
MD5 | 558007a8af557096c691e7fd44a13a71 |
|
BLAKE2b-256 | 570134ec989e447297668b9312301a37e8c0fead0cfb46e4a019b21ac623d1c6 |