View a markdown version of this page

Praktik terbaik untuk menggunakan AWS CLI dan SDK dengan Neptunus - Amazon Neptune

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Praktik terbaik untuk menggunakan AWS CLI dan SDK dengan Neptunus

Secara default, waktu AWS CLI dan AWS SDK habis setelah 60 detik dan secara otomatis mencoba kembali permintaan yang gagal. Untuk kueri yang membutuhkan waktu lebih dari 60 detik untuk diselesaikan, perilaku default ini menyebabkan eksekusi kueri duplikat. Coba lagi mengaktifkan permintaan baru saat kueri asli masih berjalan di server.

penting

Saat Anda menjalankan kueri yang berjalan lama melalui API dataplane Neptunus (misalnya,), nonaktifkan percobaan ulang otomatis. execute-open-cypher-query Juga menambah atau menghapus batas waktu baca. Jika tidak, klien mencoba ulang kueri saat aslinya masih dijalankan, yang menggandakan beban pada cluster Neptunus Anda.

Rekomendasi berikut berlaku untuk setiap operasi dataplane Neptunus yang dapat berjalan lebih lama dari batas waktu default 60 detik:

  • Setel batas waktu baca ke 0 (tak terbatas) atau nilai yang lebih besar dari durasi kueri terpanjang yang Anda harapkan.

  • Atur total upaya maksimum ke 1 (satu upaya, nol percobaan ulang). Hal ini mencegah klien dari mencoba kembali permintaan bahwa server masih memproses.

Contoh berikut menunjukkan cara mengkonfigurasi pengaturan ini untuk SDK AWS CLI dan populer.

AWS CLI
export AWS_MAX_ATTEMPTS=1 aws neptunedata execute-open-cypher-query \ --endpoint-url https://your-cluster-endpoint:port \ --open-cypher-query "RETURN 1" \ --cli-read-timeout 0

--cli-read-timeout 0Parameter menonaktifkan batas waktu baca, memungkinkan AWS CLI untuk menunggu tanpa batas waktu untuk respons. Variabel AWS_MAX_ATTEMPTS=1 lingkungan menetapkan total upaya maksimum ke 1, yang berarti permintaan dicoba tepat sekali tanpa percobaan ulang.

Python (boto3)
import boto3 from botocore.config import Config client = boto3.client( 'neptunedata', endpoint_url='https://your-cluster-endpoint:port', region_name='us-east-1', config=Config( retries={'total_max_attempts': 1, 'mode': 'standard'}, read_timeout=None ) )

Pengaturan read_timeout=None menonaktifkan batas waktu baca. Menyetel total_max_attempts ke 1 berarti permintaan dicoba tepat sekali tanpa mencoba lagi.

Java V2 SDK
import software.amazon.awssdk.services.neptunedata.NeptunedataClient; import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; import software.amazon.awssdk.core.retry.RetryPolicy; import software.amazon.awssdk.regions.Region; import java.time.Duration; import java.net.URI; // Build the Neptune dataplane client with no retries and infinite timeout NeptunedataClient neptunedataClient = NeptunedataClient.builder() .endpointOverride(URI.create("https://your-cluster-endpoint:port")) .region(Region.of("us-east-1")) .overrideConfiguration(ClientOverrideConfiguration.builder() .apiCallTimeout(Duration.ZERO) .retryPolicy(RetryPolicy.none()) .build()) .build();

Pengaturan apiCallTimeout untuk Duration.ZERO mengonfigurasi batas waktu tak terbatas untuk panggilan API. Menggunakan RetryPolicy.none() menonaktifkan semua percobaan ulang otomatis.