コード例 #1
0
ファイル: core.py プロジェクト: ShintuJoseph/stratus
 def __init__(self, configSpec: Union[str, Dict[str, Dict]], **kwargs):
     self._workers: Dict[str, TaskManager] = {}
     self._flower = None
     self.baseDir = os.path.dirname(__file__)
     StratusCore.__init__(self,
                          configSpec,
                          internal_clients=False,
                          **kwargs)
     self.parms.update(type="celery")
     self.logger = StratusLogger.getLogger()
     self.logger.info(f"Starting CeleryCore with parms: {self.parms}")
     if self.parm('flower', False): self._startFlower()
コード例 #2
0
 def getCeleryCore(self, core: StratusCore, **kwargs) -> StratusCore:
     for key, core_celery_params in core.config.items():
         if core_celery_params.get('type') == 'celery':
             celery_settings = core_celery_params.get("settings")
             if celery_settings is not None:
                 return StratusCore(celery_settings)
     return core
コード例 #3
0
 def initHandler(self, clientSpec: Dict[str, Dict]):
     if self._handlers is None:
         hspec: Dict[str, Dict] = {
             clientSpec['name']: clientSpec,
             "stratus": {
                 'type': "celery",
                 'name': "stratus"
             }
         }
         self.core = StratusCore(hspec)
         self._handlers = Handlers(self.core, hspec)
         self._name, handlerSpec = list(hspec.items())[0]
         self._handler: Handler = self._handlers.available[self._name]
コード例 #4
0
ファイル: client.py プロジェクト: supriyascode/stratus
            request_parms = dict(request='getCapabilities',
                                 service='WPS',
                                 identifier='epas')
            return self.execJsonRequest(self.host_address, request_parms)
        return {op.name: str(op) for op in self.wpsRequest.operations}

    def log(self, msg: str):
        self.logger.info("[RP] " + msg)


if __name__ == "__main__":
    from stratus.util.test import TestDataManager as mgr
    HERE = os.path.dirname(os.path.abspath(__file__))
    SETTINGS_FILE = os.path.join(HERE, "client_test_settings.ini")

    core = StratusCore(SETTINGS_FILE)
    client = core.getClient()

    local_request = dict(domain=[{
        "name": "d0",
        "lat": {
            "start": 50,
            "end": 55,
            "system": "values"
        },
        "lon": {
            "start": 40,
            "end": 42,
            "system": "values"
        },
        "time": {
コード例 #5
0
                                f"COMPLETED TASK: taskID: {wtask.id}, outputID: {output_id}, nodes: {list(self.ids)}, exception: {wtask.taskHandle.exception()}, status: {wtask.taskHandle.status()}"
                            )
                            if wtask.id == output_id:
                                self.result = wtask.taskHandle
        except Exception as err:
            self._status = Status.ERROR
            self.result = FailedTask(err)
        return completed


if __name__ == "__main__":
    from stratus.app.core import StratusCore
    from stratus.util.test import TestDataManager as mgr
    settings = dict(stratus=dict(type="endpoint"))

    core = StratusCore(settings)
    client = core.getClient()
    client.init()
    request = dict(domain=[{
        "name": "d0",
        "lat": {
            "start": 50,
            "end": 55,
            "system": "values"
        },
        "lon": {
            "start": 40,
            "end": 42,
            "system": "values"
        },
        "time": {
コード例 #6
0
import time
from stratus.app.core import StratusCore
import MODIS_Aggregation.cloud_fraction_aggregate as modis

if __name__ == "__main__":
    start = time.time()

    #  Startup a Stratus zmq client and connect to a server on localhost

    settings = dict(stratus=dict(type="rest",
                                 client_address="127.0.0.1",
                                 host="127.0.0.1",
                                 port="5000",
                                 api="core"))

    stratus = StratusCore(settings)
    client = stratus.getClient()

    # M03_dir = "/Users/lakshmipriyanka/Project/MODIS_Aggregation/resources/data/input_data_sample/MYD03/"
    # M06_dir = "/Users/lakshmipriyanka/Project/MODIS_Aggregation/resources/data/input_data_sample/MYD06/"
    # requestSpec = dict(
    #     input=dict(path1=M03_dir, path2=M06_dir, name1=["Latitude", "Longitude"], name2=["Cloud_Mask_1km"]),
    #     operation=[dict(name="xop:cloudFraction")]
    # )

    requestSpec = dict(input=dict(area=["Latitude", "Longitude"],
                                  cloud_mask=["Cloud_Mask_1km"]),
                       operation=[dict(name="xop:cloudFraction")])

    # Submit the request to the server and wait for the result
コード例 #7
0
 def __init__(self, core: StratusCore, type: str, **kwargs):
     StratusClient.__init__(self, type, **kwargs)
     self.app: StratusAppBase = core.getApplication()
コード例 #8
0
ファイル: server.py プロジェクト: supriyascode/stratus
from stratus.handlers.zeromq.app import StratusApp
from stratus.app.core import StratusCore
import os
HERE: str = os.path.dirname(os.path.abspath(__file__))
SETTINGS_FILE: str = os.path.join( HERE, "server_settings.ini" )

if __name__ == '__main__':

# Start up a STRATUS server as configured in the settings file
	core: StratusCore = StratusCore(SETTINGS_FILE)
	app: StratusApp = core.getApplication()
	app.run()
コード例 #9
0
from stratus_endpoint.handler.base import TaskHandle, TaskResult
from typing import Sequence, List, Dict, Mapping, Optional, Any
from edas.process.test import TestDataManager as mgr
import os, xarray as xa
from stratus.app.core import StratusCore
HERE: str = os.path.dirname(os.path.abspath(__file__))
SETTINGS_FILE: str = os.path.join(HERE, "edas_endpoint_settings.ini")

if __name__ == "__main__":

    stratus = StratusCore(SETTINGS_FILE)
    client = stratus.getClient()
    time_range = {
        "start": "1980-01-01",
        "end": "2001-12-31",
        "crs": "timestamps"
    }
    uri = mgr.getAddress("merra2", "tas")
    domains = [f"d{i}" for i in range(4)]

    requestSpec = dict(domain=[
        dict(name="d0",
             lat=dict(start=20, end=30, system="values"),
             lon=dict(start=0, end=10, system="values"),
             time=time_range),
        dict(name="d1",
             lat=dict(start=30, end=40, system="values"),
             lon=dict(start=10, end=20, system="values"),
             time=time_range),
        dict(name="d2",
             lat=dict(start=50, end=60, system="values"),
コード例 #10
0
        tb = traceback.format_exc()
        self.logger.error("@@STRATUS-APP: Execution error: " + str(ex))
        self.logger.error(tb)
        response = {"status": "error", "error": str(ex), "traceback": tb}
        self.sendResponseMessage(StratusResponse(rid, response))

    def updateInteractions(self):
        self.processRequests()
        self.processResults()

    def term(self, msg):
        self.logger.info("@@STRATUS-APP: !!EDAS Shutdown: " + msg)
        self.active = False
        self.auth.stop()
        self.logger.info("@@STRATUS-APP: QUIT PythonWorkerPortal")
        try:
            self.request_socket.close()
        except Exception:
            pass
        self.logger.info("@@STRATUS-APP: CLOSE request_socket")
        self.responder.close_connection()
        self.logger.info("@@STRATUS-APP: TERM responder")
        self.shutdown()
        self.logger.info("@@STRATUS-APP: shutdown complete")


if __name__ == "__main__":
    core = StratusCore("test_settings1.ini")
    app = core.getApplication()
    app.start()
コード例 #11
0
ファイル: workflow_test.py プロジェクト: nasa-nccs-cds/edask
from stratus_endpoint.handler.base import TaskHandle, TaskResult
from typing import Sequence, List, Dict, Mapping, Optional, Any
from edas.process.test import TestDataManager as mgr
import xarray as xa
from stratus.app.core import StratusCore
from stratus.app.operations import ClientOpSet

settings = dict( stratus=dict(type="zeromq", request_port="4556", response_port="4557" ),
                 edas=dict( type="endpoint", module="edas.stratus.endpoint", object="EDASEndpoint" ) )
core = StratusCore(settings)
app = core.getApplication()

request = {    "edas:domain": [ { "name": "d0", "time": {"start": "1980-01-01", "end": "2001-12-31", "crs": "timestamps"} } ],
                "edas:input":  [ { "uri": "collection:merra2", "name": "tas:v1", "domain": "d1" } ],
                "operation":   [ { "name": "edas:ave", "input": "v1", "axis": "yt", "result": "v1ave" },
                                { "name": "edas:diff", "input": ["v1", "v1ave"] } ] }

clientOpsets: Dict[str, ClientOpSet] = app.geClientOpsets(request)
distributed_opSets = app.distributeOps(clientOpsets)
コード例 #12
0
from stratus.app.core import StratusCore
import os
HERE = os.path.dirname(os.path.abspath(__file__))
SETTINGS_FILE = os.path.join(HERE, "edas_rest_zmq_settings.ini")

if __name__ == '__main__':
    core = StratusCore(SETTINGS_FILE)
    app = core.getApplication()
    app.run()
コード例 #13
0
from stratus.app.core import StratusCore
from typing import List, Dict, Any, Sequence, BinaryIO, TextIO, ValuesView, Optional
from stratus_endpoint.handler.base import TaskHandle
import os

testEndpoint = dict(type="endpoint",
                    module="stratus.handlers.endpoint.test",
                    object="TestEndpoint1")

if __name__ == "__main__":

    settings = dict(stratus=dict(type="test"),
                    test1=testEndpoint,
                    test2=testEndpoint,
                    test3=testEndpoint)
    stratus = StratusCore(settings)
    app = stratus.getApplication()

    operation = [
        dict(name='test1:op', result="r1", cid="C0", workTime="3.0"),
        dict(name='test2:op', result="r2", cid="C1", workTime="6.0"),
        dict(name='test3:op',
             input=["r1", "r2"],
             result="r3",
             cid="C2",
             workTime="1.0")
    ]
    request = dict(operation=operation, rid="R0", cid="C0")

    app.submitWorkflow(request)
    for taskHandle in taskHandles.values():
コード例 #14
0
from stratus.app.core import StratusCore
import os
HERE = os.path.dirname(os.path.abspath(__file__))
SETTINGS_FILE = os.path.join(HERE, "settings.ini")

if __name__ == "__main__":

    stratus = StratusCore(SETTINGS_FILE)
    server = stratus.getClient()

    variables = [dict(name='tas:v0', uri='collection://merra2')]
    bounds = [dict(axis='lat', start=-50, end=50, crs='values')]
    domains = [dict(name='d0', bounds=bounds)]
    operations = [dict(name='hpda.test1', axis='t', input='v0', domain='d0')]
    request = dict(variables=variables, domains=domains, operations=operations)

    response = server.request("exe", request=request)
    print(response)

    response = server.request("stat", id=response['id'])
    print(response)

    response = server.request("kill", id=response['id'])
    print(response)