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
Commits
pip install pre-commit
pre-commit install # add pre-commit hook
... # modify the code
git add . #add modified files
git commit -m"some modifications" # pre-commit will be triggered to check code format
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.38.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | dc4a5d5db0b951a4448b3576a0fcbccce3921e4f9ba9a0b8fca73ea0644f1484 |
|
MD5 | beb4435b39ff316f3dd1a4fca6614005 |
|
BLAKE2b-256 | f641b79d1d0895fb47834fdb23c4383c28cce45aa7ca23814d0db157812b995e |
Close
Hashes for qcentroid_agent_cli-0.3.38-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7c23f6a59fbe8c2cb89bee8c1c68281e5d75bb653e42d0a6b4ed16eb91d7ad43 |
|
MD5 | 7ee04fc2f4a129f18bacb612f9517004 |
|
BLAKE2b-256 | adef31af75f5364199a762a478ea18132047c6d0eabc48cc1118cf0905307ed4 |