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)
# 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()
Example for external agents:
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()
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.29.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 981340228eeff4d6efa2f615b2187b0952ad713fa951aae872760c1849b25250 |
|
MD5 | 835a00238c509323b603ef06f81c2708 |
|
BLAKE2b-256 | 7d8e5b91b9e1b60380aa74ca3f21433aa6b0aa922e22cc83ab2500382d6a54a2 |
Close
Hashes for qcentroid_agent_cli-0.3.29-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 125d76558dafacbff1f663ff99f4d6e079e6b586b9df60420b602c2829b535be |
|
MD5 | e9925dc6e7c59ee4aac7b66b9804bf95 |
|
BLAKE2b-256 | bed5667047fa663deb9dd5ed5ec611d464dbf269b51111174610a14bad895e97 |