Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Esta página descreve como definir um tempo limite para uma única execução de instrução usando
as bibliotecas de cliente do Spanner. Isso pode ser usado para substituir a
configuração de tempo limite padrão da biblioteca de cliente. A instrução falhará com um
erro DEADLINE_EXCEEDED se não puder ser concluída dentro do valor de
tempo limite especificado.
Esses exemplos mostram como definir um tempo limite para a execução de uma única instrução no
Biblioteca de cliente do Cloud Spanner.
Go
import("context""fmt""io""time""cloud.google.com/go/spanner""google.golang.org/grpc/codes")funcsetStatementTimeout(wio.Writer,dbstring)error{client,err:=spanner.NewClient(context.Background(),db)iferr!=nil{returnerr}deferclient.Close()_,err=client.ReadWriteTransaction(context.Background(),func(ctxcontext.Context,txn*spanner.ReadWriteTransaction)error{// Create a context with a 60-second timeout and apply this timeout to the insert statement.ctxWithTimeout,cancel:=context.WithTimeout(context.Background(),60*time.Second)defercancel()stmt:=spanner.Statement{SQL:`INSERT Singers (SingerId, FirstName, LastName) VALUES (39, 'George', 'Washington')`,}rowCount,err:=txn.Update(ctxWithTimeout,stmt)// Get the error code from the error. This function returns codes.OK if err == nil.code:=spanner.ErrCode(err)ifcode==codes.DeadlineExceeded{fmt.Fprintf(w,"Insert statement timed out.\n")}elseifcode==codes.OK{fmt.Fprintf(w,"%d record(s) inserted.\n",rowCount)}else{fmt.Fprintf(w,"Insert statement failed with error %v\n",err)}returnerr})iferr!=nil{returnerr}returnnil}
Java
staticvoidexecuteSqlWithTimeout(){// TODO(developer): Replace these variables before running the sample.StringprojectId="my-project";StringinstanceId="my-instance";StringdatabaseId="my-database";try(Spannerspanner=SpannerOptions.newBuilder().setProjectId(projectId).build().getService()){DatabaseClientclient=spanner.getDatabaseClient(DatabaseId.of(projectId,instanceId,databaseId));executeSqlWithTimeout(client);}}staticvoidexecuteSqlWithTimeout(DatabaseClientclient){CallContextConfiguratorconfigurator=newCallContextConfigurator(){public<ReqT,RespT>ApiCallContextconfigure(ApiCallContextcontext,ReqTrequest,MethodDescriptor<ReqT,RespT>method){// DML uses the ExecuteSql RPC.if(method==SpannerGrpc.getExecuteSqlMethod()){// NOTE: You can use a GrpcCallContext to set a custom timeout for a single RPC// invocation. This timeout can however ONLY BE SHORTER than the default timeout// for the RPC. If you set a timeout that is longer than the default timeout, then// the default timeout will be used.returnGrpcCallContext.createDefault().withCallOptions(CallOptions.DEFAULT.withDeadlineAfter(60L,TimeUnit.SECONDS));}// Return null to indicate that the default should be used for other methods.returnnull;}};// Create a context that uses the custom call configuration.Contextcontext=Context.current().withValue(SpannerOptions.CALL_CONTEXT_CONFIGURATOR_KEY,configurator);// Run the transaction in the custom context.context.run(()->
client.readWriteTransaction().<long[]>run(transaction->{Stringsql="INSERT INTO Singers (SingerId, FirstName, LastName)\n"+"VALUES (20, 'George', 'Washington')";longrowCount=transaction.executeUpdate(Statement.of(sql));System.out.printf("%d record inserted.%n",rowCount);returnnull;}));}
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2024-10-14 UTC."],[],[]]