async def sample_list_document_statuses_with_filters_async(): # import libraries from azure.core.credentials import AzureKeyCredential from azure.ai.translation.document.aio import ( DocumentTranslationClient, ) from datetime import datetime # obtain client secrets endpoint = os.environ["AZURE_DOCUMENT_TRANSLATION_ENDPOINT"] key = os.environ["AZURE_DOCUMENT_TRANSLATION_KEY"] translation_id = os.environ[ "TRANSLATION_ID"] # this should be the id for the translation operation you'd like to list docs for! # authorize client client = DocumentTranslationClient(endpoint, AzureKeyCredential(key)) # set your filters ''' Note: these are just sample values for the filters! please comment/uncomment/change what you are interested in using. ''' start = datetime(2021, 4, 12) end = datetime(2021, 4, 14) statuses = ["Canceled", "Failed"] order_by = ["created_on desc"] results_per_page = 2 skip = 3 async with client: filtered_docs = client.list_document_statuses( translation_id, # filters statuses=statuses, created_after=start, created_before=end, # ordering order_by=order_by, # paging skip=skip, results_per_page=results_per_page).by_page() # check statuses async for page in filtered_docs: async for doc in page: display_doc_info(doc)
async def sample_document_status_checks_async(): # [START list_document_statuses_async] import os from azure.core.credentials import AzureKeyCredential from azure.ai.translation.document.aio import DocumentTranslationClient endpoint = os.environ["AZURE_DOCUMENT_TRANSLATION_ENDPOINT"] key = os.environ["AZURE_DOCUMENT_TRANSLATION_KEY"] source_container_url = os.environ["AZURE_SOURCE_CONTAINER_URL"] target_container_url = os.environ["AZURE_TARGET_CONTAINER_URL"] client = DocumentTranslationClient(endpoint, AzureKeyCredential(key)) async with client: poller = await client.begin_translation(source_container_url, target_container_url, "es") completed_docs = [] while poller.status() in ["Running", "NotStarted"]: await asyncio.sleep(30) doc_statuses = client.list_document_statuses(poller.id) async for document in doc_statuses: if document.id not in completed_docs: if document.status == "Succeeded": print( "Document at {} was translated to {} language. You can find translated document at {}" .format(document.source_document_url, document.translated_to, document.translated_document_url)) completed_docs.append(document.id) if document.status == "Failed": print( "Document at {} failed translation. Error Code: {}, Message: {}" .format(document.source_document_url, document.error.code, document.error.message)) completed_docs.append(document.id) if document.status == "Running": print( "Document ID: {}, translation progress is {} percent" .format(document.id, document.translation_progress * 100)) print("\nTranslation completed.")
async def sample_translation_with_custom_model_async(): import os from azure.core.credentials import AzureKeyCredential from azure.ai.translation.document.aio import DocumentTranslationClient endpoint = os.environ["AZURE_DOCUMENT_TRANSLATION_ENDPOINT"] key = os.environ["AZURE_DOCUMENT_TRANSLATION_KEY"] source_container_url = os.environ["AZURE_SOURCE_CONTAINER_URL"] target_container_url = os.environ["AZURE_TARGET_CONTAINER_URL"] custom_model_id = os.environ["AZURE_CUSTOM_MODEL_ID"] client = DocumentTranslationClient(endpoint, AzureKeyCredential(key)) async with client: poller = await client.begin_translation(source_container_url, target_container_url, "es", category_id=custom_model_id) result = await poller.result() print("Operation status: {}".format(result.status)) print("Operation created on: {}".format(result.created_on)) print("Operation last updated on: {}".format(result.last_updated_on)) print("Total number of translations on documents: {}".format( result.documents_total_count)) print("\nOf total documents...") print("{} failed".format(result.documents_failed_count)) print("{} succeeded".format(result.documents_succeeded_count)) doc_results = client.list_document_statuses(result.id) async for document in doc_results: print("Document ID: {}".format(document.id)) print("Document status: {}".format(document.status)) if document.status == "Succeeded": print("Source document location: {}".format( document.source_document_url)) print("Translated document location: {}".format( document.translated_document_url)) print("Translated to language: {}\n".format( document.translate_to)) else: print("Error Code: {}, Message: {}\n".format( document.error.code, document.error.message))
class TranslationPerfStressTest(PerfStressTest): def __init__(self, arguments): super().__init__(arguments) # test related env vars endpoint = os.environ["TRANSLATION_DOCUMENT_TEST_ENDPOINT"] key = os.environ["TRANSLATION_DOCUMENT_TEST_API_KEY"] self.storage_name = os.environ["TRANSLATION_DOCUMENT_STORAGE_NAME"] self.storage_key = os.environ["TRANSLATION_DOCUMENT_STORAGE_KEY"] self.storage_endpoint = "https://" + self.storage_name + ".blob.core.windows.net/" self.source_container_name = "source-perf-" + str(uuid.uuid4()) self.target_container_name = "target-perf-" + str(uuid.uuid4()) self.service_client = DocumentTranslationClient( endpoint, AzureKeyCredential(key), **self._client_kwargs) self.async_service_client = AsyncDocumentTranslationClient( endpoint, AzureKeyCredential(key), **self._client_kwargs) async def create_source_container(self): container_client = ContainerClient(self.storage_endpoint, self.source_container_name, self.storage_key) async with container_client: await container_client.create_container() docs = Document.create_docs(10) for blob in docs: await container_client.upload_blob(name=blob.prefix + blob.name + blob.suffix, data=blob.data) return self.generate_sas_url(self.source_container_name, "rl") async def create_target_container(self): container_client = ContainerClient(self.storage_endpoint, self.target_container_name, self.storage_key) async with container_client: await container_client.create_container() return self.generate_sas_url(self.target_container_name, "wl") def generate_sas_url(self, container_name, permission): sas_token = generate_container_sas(account_name=self.storage_name, container_name=container_name, account_key=self.storage_key, permission=permission, expiry=datetime.datetime.utcnow() + datetime.timedelta(hours=2)) container_sas_url = self.storage_endpoint + container_name + "?" + sas_token return container_sas_url async def global_setup(self): """The global setup is run only once.""" self.source_container_sas_url = await self.create_source_container() self.target_container_sas_url = await self.create_target_container() poller = await self.async_service_client.begin_translation( self.source_container_sas_url, self.target_container_sas_url, "fr") self.translation_id = poller.id async def global_cleanup(self): """The global cleanup is run only once.""" blob_service_client = BlobServiceClient(self.storage_endpoint, self.storage_key) async with blob_service_client: await blob_service_client.delete_container( self.source_container_name) await blob_service_client.delete_container( self.target_container_name) async def close(self): """This is run after cleanup.""" await self.async_service_client.close() self.service_client.close() await super().close() def run_sync(self): """The synchronous perf test.""" statuses = self.service_client.list_document_statuses( self.translation_id) for doc in statuses: pass async def run_async(self): """The asynchronous perf test.""" statuses = self.async_service_client.list_document_statuses( self.translation_id) async for doc in statuses: pass