2424from influxdb_client_3 .write_client .domain import WritePrecision
2525from influxdb_client_3 .write_client .rest import _UTF_8_encoding
2626
27+ DEFAULT_WRITE_NO_SYNC = False
28+
2729logger = logging .getLogger ('influxdb_client_3.write_client.client.write_api' )
2830
2931if _HAS_DATACLASS :
@@ -41,7 +43,8 @@ class WriteType(Enum):
4143
4244class DefaultWriteOptions (Enum ):
4345 write_type = WriteType .synchronous
44- write_precision = WritePrecision .NS
46+ write_precision = DEFAULT_WRITE_PRECISION
47+ no_sync = DEFAULT_WRITE_NO_SYNC
4548
4649
4750class WriteOptions (object ):
@@ -57,6 +60,7 @@ def __init__(self, write_type: WriteType = WriteType.batching,
5760 exponential_base = 2 ,
5861 max_close_wait = 300_000 ,
5962 write_precision = DEFAULT_WRITE_PRECISION ,
63+ no_sync = DEFAULT_WRITE_NO_SYNC ,
6064 write_scheduler = ThreadPoolScheduler (max_workers = 1 )) -> None :
6165 """
6266 Create write api configuration.
@@ -72,7 +76,9 @@ def __init__(self, write_type: WriteType = WriteType.batching,
7276 :param max_retry_delay: the maximum delay between each retry attempt in milliseconds
7377 :param max_retry_time: total timeout for all retry attempts in milliseconds, if 0 retry is disabled
7478 :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
79+ :param max_close_wait: the maximum time to wait for writes to be flushed if close() is called
80+ :param write_precision: precision to use when writing points to InfluxDB
81+ :param no_sync: skip waiting for WAL persistence on write
7682 :param write_scheduler:
7783 """
7884 self .write_type = write_type
@@ -87,6 +93,7 @@ def __init__(self, write_type: WriteType = WriteType.batching,
8793 self .write_scheduler = write_scheduler
8894 self .max_close_wait = max_close_wait
8995 self .write_precision = write_precision
96+ self .no_sync = no_sync
9097
9198 def to_retry_strategy (self , ** kwargs ):
9299 """
@@ -202,7 +209,7 @@ def _body_reduce(batch_items):
202209
203210class WriteApi (_BaseWriteApi ):
204211 """
205- Implementation for '/api/v2/write' endpoint.
212+ Implementation for '/api/v2/write' and '/api/v3/write_lp' endpoint.
206213
207214 Example:
208215 .. code-block:: python
@@ -375,14 +382,16 @@ def write(self, bucket: str, org: str = None,
375382 return self ._write_batching (bucket , org , record ,
376383 write_precision , ** kwargs )
377384
385+ no_sync = self ._write_options .no_sync
386+
378387 payloads = defaultdict (list )
379388 self ._serialize (record , write_precision , payloads , ** kwargs )
380389
381390 _async_req = True if self ._write_options .write_type == WriteType .asynchronous else False
382391
383392 def write_payload (payload ):
384393 final_string = b'\n ' .join (payload [1 ])
385- return self ._post_write (_async_req , bucket , org , final_string , payload [0 ])
394+ return self ._post_write (_async_req , bucket , org , final_string , payload [0 ], no_sync )
386395
387396 results = list (map (write_payload , payloads .items ()))
388397 if not _async_req :
@@ -519,18 +528,21 @@ def _retry_callback_delegate(exception):
519528 else :
520529 _retry_callback_delegate = None
521530
531+ no_sync = self ._write_options .no_sync
532+
522533 retry = self ._write_options .to_retry_strategy (retry_callback = _retry_callback_delegate )
523534
524535 self ._post_write (False , batch_item .key .bucket , batch_item .key .org , batch_item .data ,
525- batch_item .key .precision , urlopen_kw = {'retries' : retry })
536+ batch_item .key .precision , no_sync , urlopen_kw = {'retries' : retry })
526537
527538 logger .debug ("Write request finished %s" , batch_item )
528539
529540 return _BatchResponse (data = batch_item )
530541
531- def _post_write (self , _async_req , bucket , org , body , precision , ** kwargs ):
542+ def _post_write (self , _async_req , bucket , org , body , precision , no_sync , ** kwargs ):
532543
533544 return self ._write_service .post_write (org = org , bucket = bucket , body = body , precision = precision ,
545+ no_sync = no_sync ,
534546 async_req = _async_req ,
535547 content_type = "text/plain; charset=utf-8" ,
536548 ** kwargs )
0 commit comments