1919from influxdb_client_3 .write_client .client ._base import _BaseWriteApi , _HAS_DATACLASS
2020from influxdb_client_3 .write_client .client .util .helpers import get_org_query_param
2121from influxdb_client_3 .write_client .client .write .dataframe_serializer import DataframeSerializer
22- from influxdb_client_3 .write_client .client .write .point import Point , DEFAULT_WRITE_PRECISION
22+ from influxdb_client_3 .write_client .client .write .point import Point , DEFAULT_WRITE_PRECISION , DEFAULT_WRITE_NO_SYNC
2323from influxdb_client_3 .write_client .client .write .retry import WritesRetry
2424from influxdb_client_3 .write_client .domain import WritePrecision
2525from influxdb_client_3 .write_client .rest import _UTF_8_encoding
@@ -41,7 +41,8 @@ class WriteType(Enum):
4141
4242class DefaultWriteOptions (Enum ):
4343 write_type = WriteType .synchronous
44- write_precision = WritePrecision .NS
44+ write_precision = DEFAULT_WRITE_PRECISION
45+ no_sync = DEFAULT_WRITE_NO_SYNC
4546
4647
4748class WriteOptions (object ):
@@ -57,6 +58,7 @@ def __init__(self, write_type: WriteType = WriteType.batching,
5758 exponential_base = 2 ,
5859 max_close_wait = 300_000 ,
5960 write_precision = DEFAULT_WRITE_PRECISION ,
61+ no_sync = DEFAULT_WRITE_NO_SYNC ,
6062 write_scheduler = ThreadPoolScheduler (max_workers = 1 )) -> None :
6163 """
6264 Create write api configuration.
@@ -72,7 +74,9 @@ def __init__(self, write_type: WriteType = WriteType.batching,
7274 :param max_retry_delay: the maximum delay between each retry attempt in milliseconds
7375 :param max_retry_time: total timeout for all retry attempts in milliseconds, if 0 retry is disabled
7476 :param exponential_base: base for the exponential retry delay
75- :parama max_close_wait: the maximum time to wait for writes to be flushed if close() is called
77+ :param max_close_wait: the maximum time to wait for writes to be flushed if close() is called
78+ :param write_precision: precision to use when writing points to InfluxDB
79+ :param no_sync: skip waiting for WAL persistence on write
7680 :param write_scheduler:
7781 """
7882 self .write_type = write_type
@@ -87,6 +91,7 @@ def __init__(self, write_type: WriteType = WriteType.batching,
8791 self .write_scheduler = write_scheduler
8892 self .max_close_wait = max_close_wait
8993 self .write_precision = write_precision
94+ self .no_sync = no_sync
9095
9196 def to_retry_strategy (self , ** kwargs ):
9297 """
@@ -375,14 +380,16 @@ def write(self, bucket: str, org: str = None,
375380 return self ._write_batching (bucket , org , record ,
376381 write_precision , ** kwargs )
377382
383+ no_sync = self ._write_options .no_sync
384+
378385 payloads = defaultdict (list )
379386 self ._serialize (record , write_precision , payloads , ** kwargs )
380387
381388 _async_req = True if self ._write_options .write_type == WriteType .asynchronous else False
382389
383390 def write_payload (payload ):
384391 final_string = b'\n ' .join (payload [1 ])
385- return self ._post_write (_async_req , bucket , org , final_string , payload [0 ])
392+ return self ._post_write (_async_req , bucket , org , final_string , payload [0 ], no_sync )
386393
387394 results = list (map (write_payload , payloads .items ()))
388395 if not _async_req :
@@ -519,18 +526,21 @@ def _retry_callback_delegate(exception):
519526 else :
520527 _retry_callback_delegate = None
521528
529+ no_sync = self ._write_options .no_sync
530+
522531 retry = self ._write_options .to_retry_strategy (retry_callback = _retry_callback_delegate )
523532
524533 self ._post_write (False , batch_item .key .bucket , batch_item .key .org , batch_item .data ,
525- batch_item .key .precision , urlopen_kw = {'retries' : retry })
534+ batch_item .key .precision , no_sync , urlopen_kw = {'retries' : retry })
526535
527536 logger .debug ("Write request finished %s" , batch_item )
528537
529538 return _BatchResponse (data = batch_item )
530539
531- def _post_write (self , _async_req , bucket , org , body , precision , ** kwargs ):
540+ def _post_write (self , _async_req , bucket , org , body , precision , no_sync , ** kwargs ):
532541
533542 return self ._write_service .post_write (org = org , bucket = bucket , body = body , precision = precision ,
543+ no_sync = no_sync ,
534544 async_req = _async_req ,
535545 content_type = "text/plain; charset=utf-8" ,
536546 ** kwargs )
0 commit comments