本文整理汇总了Python中interface.services.dm.iingestion_management_service.IngestionManagementServiceClient.pause_data_stream方法的典型用法代码示例。如果您正苦于以下问题:Python IngestionManagementServiceClient.pause_data_stream方法的具体用法?Python IngestionManagementServiceClient.pause_data_stream怎么用?Python IngestionManagementServiceClient.pause_data_stream使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类interface.services.dm.iingestion_management_service.IngestionManagementServiceClient
的用法示例。
在下文中一共展示了IngestionManagementServiceClient.pause_data_stream方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: TestDMEnd2End
# 需要导入模块: from interface.services.dm.iingestion_management_service import IngestionManagementServiceClient [as 别名]
# 或者: from interface.services.dm.iingestion_management_service.IngestionManagementServiceClient import pause_data_stream [as 别名]
#.........这里部分代码省略.........
publisher.publish(rdt.to_granule())
self.assertTrue(dataset_monitor.wait())
replay_granule = self.data_retriever.retrieve(dataset_id)
rdt_out = RecordDictionaryTool.load_from_granule(replay_granule)
np.testing.assert_array_almost_equal(rdt_out['time'], rdt['time'])
np.testing.assert_array_almost_equal(rdt_out['temp'], rdt['temp'])
np.testing.assert_allclose(rdt_out['conductivity_L1'], np.array([42.914]))
np.testing.assert_allclose(rdt_out['temp_L1'], np.array([20.]))
np.testing.assert_allclose(rdt_out['pressure_L1'], np.array([3.068]))
np.testing.assert_allclose(rdt_out['density'], np.array([1021.7144739593881], dtype='float32'))
np.testing.assert_allclose(rdt_out['salinity'], np.array([30.935132729668283], dtype='float32'))
def test_ingestion_pause(self):
ctd_stream_id, route, stream_def_id, dataset_id = self.make_simple_dataset()
ingestion_config_id = self.get_ingestion_config()
self.start_ingestion(ctd_stream_id, dataset_id)
self.addCleanup(self.stop_ingestion, ctd_stream_id)
rdt = RecordDictionaryTool(stream_definition_id=stream_def_id)
rdt['time'] = np.arange(10)
publisher = StandaloneStreamPublisher(ctd_stream_id, route)
monitor = DatasetMonitor(dataset_id)
self.addCleanup(monitor.stop)
publisher.publish(rdt.to_granule())
self.assertTrue(monitor.wait())
granule = self.data_retriever.retrieve(dataset_id)
self.ingestion_management.pause_data_stream(ctd_stream_id, ingestion_config_id)
monitor.event.clear()
rdt['time'] = np.arange(10,20)
publisher.publish(rdt.to_granule())
self.assertFalse(monitor.event.wait(1))
self.ingestion_management.resume_data_stream(ctd_stream_id, ingestion_config_id)
self.assertTrue(monitor.wait())
granule = self.data_retriever.retrieve(dataset_id)
rdt2 = RecordDictionaryTool.load_from_granule(granule)
np.testing.assert_array_almost_equal(rdt2['time'], np.arange(20))
def test_last_granule(self):
stream_id, route, stream_def_id, dataset_id = self.make_simple_dataset()
self.start_ingestion(stream_id, dataset_id)
self.addCleanup(self.stop_ingestion, stream_id)
self.publish_hifi(stream_id,route, 0)
self.publish_hifi(stream_id,route, 1)
self.wait_until_we_have_enough_granules(dataset_id,20) # I just need two
success = False
def verifier():
replay_granule = self.data_retriever.retrieve_last_data_points(dataset_id, 10)
rdt = RecordDictionaryTool.load_from_granule(replay_granule)
示例2: DirectCoverageAccess
# 需要导入模块: from interface.services.dm.iingestion_management_service import IngestionManagementServiceClient [as 别名]
# 或者: from interface.services.dm.iingestion_management_service.IngestionManagementServiceClient import pause_data_stream [as 别名]
class DirectCoverageAccess(object):
def __init__(self):
self.ingestion_management = IngestionManagementServiceClient()
self.resource_registry = ResourceRegistryServiceClient()
self.data_product_management = DataProductManagementServiceClient()
self.dataset_management = DatasetManagementServiceClient()
self._paused_streams = []
self._w_covs = {}
self._ro_covs = {}
self._context_managed = False
def __enter__(self):
self._context_managed = True
return self
def __exit__(self, exc_type, exc_val, exc_tb):
self.clean_up()
def clean_up(self, ro_covs=False, w_covs=False, streams=False):
if not ro_covs and not w_covs and not streams:
ro_covs = w_covs = streams = True
if ro_covs:
# Close any open read-only coverages
for dsid, c in self._ro_covs.iteritems():
c.close()
if w_covs:
# Close any open write coverages
for sid, c in self._w_covs.iteritems():
c.close()
if streams:
# Resume any paused ingestion workers
for s in self._paused_streams:
self.resume_ingestion(s)
def get_ingestion_config(self):
'''
Grab the ingestion configuration from the resource registry
'''
# The ingestion configuration should have been created by the bootstrap service
# which is configured through r2deploy.yml
ingest_configs, _ = self.resource_registry.find_resources(restype=RT.IngestionConfiguration,id_only=True)
return ingest_configs[0]
def get_coverage_path(self, dataset_id):
pth = DatasetManagementService._get_coverage_path(dataset_id)
if not os.path.exists(pth):
raise ValueError('Coverage with id \'{0}\' does not exist!'.format(dataset_id))
return pth
def pause_ingestion(self, stream_id):
if not self._context_managed:
warn_user('Warning: Pausing ingestion when not using a context manager is potentially unsafe - '
'be sure to resume ingestion for all streams by calling self.clean_up(streams=True)')
if stream_id not in self._paused_streams:
self.ingestion_management.pause_data_stream(stream_id, self.get_ingestion_config())
self._paused_streams.append(stream_id)
def resume_ingestion(self, stream_id):
if stream_id in self._paused_streams:
self.ingestion_management.resume_data_stream(stream_id, self.get_ingestion_config())
self._paused_streams.remove(stream_id)
def get_stream_id(self, dataset_id):
sid, _ = self.resource_registry.find_objects(dataset_id, predicate=PRED.hasStream, id_only=True)
return sid[0] if len(sid) > 0 else None
def get_dataset_object(self, dataset_id):
return self.dataset_management.read_dataset(dataset_id=dataset_id)
def get_data_product_object(self, data_product_id):
return self.data_product_management.read_data_product(data_product_id=data_product_id)
def get_read_only_coverage(self, dataset_id):
if not self._context_managed:
warn_user('Warning: Coverages will remain open until they are closed or go out of scope - '
'be sure to close coverage instances when you are finished working with them or call self.clean_up(ro_covs=True)')
# Check if we already have the coverage
if dataset_id in self._ro_covs:
cov = self._ro_covs[dataset_id]
# If it's not closed, return it
if not cov.closed:
return cov
# Otherwise, remove it from self._ro_covs and carry on
del self._ro_covs[dataset_id]
self._ro_covs[dataset_id] = DatasetManagementService._get_coverage(dataset_id, mode='r')
return self._ro_covs[dataset_id]
def get_editable_coverage(self, dataset_id):
sid = self.get_stream_id(dataset_id)
#.........这里部分代码省略.........