def writeRiak(riak, action, bucketname, key, data, mimeType, logger, index=None): bucket = riak.bucket(bucketname) if action == "write": obj = RiakObject(riak, bucket, key) obj.content_type = mimeType if mimeType == "application/octet-stream": obj.encoded_data = data else: obj.data = data if index is not None: for indexKey in index: try: obj.add_index(indexKey,index[indexKey]) except Exception as e: logger.error("Error updating index: "+e.message) startTime = time.time() storedObj = obj.store() duration = round((time.time() - startTime),3) if storedObj is not None: results = storedObj.key else: results = "Not stored!" logger.info(" Write "+(bucketname[-3:])+"/"+key+" Sz: "+str(len(data))+" Dur: "+str(duration)+" Results: "+results) elif action == "delete": got = bucket.get(key) startTime = time.time() got.delete() duration = round((time.time() - startTime),3) logger.info(" Block delete "+(bucketname[-3:])+"/"+key+" Duration: "+str(duration))
def new(self, key=None, data=None, content_type='application/json', encoded_data=None): """A shortcut for manually instantiating a new :class:`~riak.riak_object.RiakObject` or a new :class:`~riak.datatypes.Datatype`, based on the presence and value of the :attr:`datatype <BucketType.datatype>` bucket property. When the bucket contains a :class:`~riak.datatypes.Datatype`, all arguments are ignored except ``key``, otherwise they are used to initialize the :class:`~riak.riak_object.RiakObject`. :param key: Name of the key. Leaving this to be None (default) will make Riak generate the key on store. :type key: str :param data: The data to store in a :class:`~riak.riak_object.RiakObject`, see :attr:`RiakObject.data <riak.riak_object.RiakObject.data>`. :type data: object :param content_type: The media type of the data stored in the :class:`~riak.riak_object.RiakObject`, see :attr:`RiakObject.content_type <riak.riak_object.RiakObject.content_type>`. :type content_type: str :param encoded_data: The encoded data to store in a :class:`~riak.riak_object.RiakObject`, see :attr:`RiakObject.encoded_data <riak.riak_object.RiakObject.encoded_data>`. :type encoded_data: str :rtype: :class:`~riak.riak_object.RiakObject` or :class:`~riak.datatypes.Datatype` """ from riak import RiakObject if self.bucket_type.datatype: return TYPES[self.bucket_type.datatype](bucket=self, key=key) if PY2: try: if isinstance(data, string_types): data = data.encode('ascii') except UnicodeError: raise TypeError('Unicode data values are not supported.') obj = RiakObject(self._client, self, key) obj.content_type = content_type if data is not None: obj.data = data if encoded_data is not None: obj.encoded_data = encoded_data return obj
def new(self, key=None, data=None, content_type="application/json", encoded_data=None): """A shortcut for manually instantiating a new :class:`~riak.riak_object.RiakObject` or a new :class:`~riak.datatypes.Datatype`, based on the presence and value of the :attr:`datatype <BucketType.datatype>` bucket property. When the bucket contains a :class:`~riak.datatypes.Datatype`, all arguments are ignored except ``key``, otherwise they are used to initialize the :class:`~riak.riak_object.RiakObject`. :param key: Name of the key. Leaving this to be None (default) will make Riak generate the key on store. :type key: str :param data: The data to store in a :class:`~riak.riak_object.RiakObject`, see :attr:`RiakObject.data <riak.riak_object.RiakObject.data>`. :type data: object :param content_type: The media type of the data stored in the :class:`~riak.riak_object.RiakObject`, see :attr:`RiakObject.content_type <riak.riak_object.RiakObject.content_type>`. :type content_type: str :param encoded_data: The encoded data to store in a :class:`~riak.riak_object.RiakObject`, see :attr:`RiakObject.encoded_data <riak.riak_object.RiakObject.encoded_data>`. :type encoded_data: str :rtype: :class:`~riak.riak_object.RiakObject` or :class:`~riak.datatypes.Datatype` """ from riak import RiakObject if self.bucket_type.datatype: return TYPES[self.bucket_type.datatype](bucket=self, key=key) if PY2: try: if isinstance(data, string_types): data = data.encode("ascii") except UnicodeError: raise TypeError("Unicode data values are not supported.") obj = RiakObject(self._client, self, key) obj.content_type = content_type if data is not None: obj.data = data if encoded_data is not None: obj.encoded_data = encoded_data return obj