예제 #1
0
class _HubstorageRef(object):

    def __init__(self):
        self.enabled = 'SHUB_JOBKEY' in os.environ
        self._client = None
        self._project = None
        self._job = None
        if self.enabled:
            self.jobkey = os.environ['SHUB_JOBKEY']
            self._projectid, self._spiderid, self._jobcounter = \
                map(int, self.jobkey.split('/'))
        else:
            self._projectid = None
            self._spiderid = None
            self._jobcounter = None

    @property
    def auth(self):
        return os.environ['SHUB_JOBAUTH'].decode('hex')

    @property
    def endpoint(self):
        return os.environ.get('SHUB_STORAGE')

    @property
    def projectid(self):
        return self._projectid

    @property
    def spiderid(self):
        return self._spiderid

    @property
    def jobid(self):
        return self._jobcounter

    @property
    def client(self):
        from hubstorage.client import HubstorageClient
        if self._client is None:
            self._client = HubstorageClient(endpoint=self.endpoint,
                                            auth=self.auth)
        return self._client

    @property
    def project(self):
        if self._project is None:
            self._project = self.client.get_project(str(self.projectid))
        return self._project

    @property
    def job(self):
        if self._job is None:
            self._job = self.project.get_job((self.spiderid, self.jobid))
        return self._job

    def close(self):
        if self._client is not None:
            self._client.close()
예제 #2
0
 def client(self):
     from hubstorage.client import HubstorageClient
     if self._client is None:
         self._client = HubstorageClient(endpoint=self.endpoint,
                                         auth=self.auth)
     return self._client