kaq-quant-common 0.1.92__tar.gz → 0.1.94__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/PKG-INFO +1 -1
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/resources/kaq_ddb_stream_write_resources.py +41 -6
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/pyproject.toml +1 -1
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/README.md +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/__init__.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/__init__.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/common/__init__.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/common/api_interface.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/common/auth.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/rest/__init__.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/rest/api_client_base.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/rest/api_server_base.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/rest/instruction/helper/order_helper.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/rest/instruction/instruction_client.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/rest/instruction/instruction_server_base.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/rest/instruction/models/__init__.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/rest/instruction/models/account.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/rest/instruction/models/order.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/rest/instruction/models/position.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/rest/instruction/models/transfer.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/ws/__init__.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/ws/exchange/models.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/ws/exchange/ws_exchange_client.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/ws/exchange/ws_exchange_server.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/ws/instruction/__init__.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/ws/instruction/ws_instruction_client.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/ws/instruction/ws_instruction_server_base.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/ws/models.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/ws/ws_client_base.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/ws/ws_server_base.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/common/__init__.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/common/ddb_table_monitor.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/common/http_monitor.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/common/modules/limit_order_helper.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/common/modules/limit_order_symbol_monitor.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/common/modules/limit_order_symbol_monitor_group.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/common/monitor_base.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/common/monitor_group.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/common/redis_table_monitor.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/common/statistics/funding_rate_history_statistics.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/common/statistics/kline_history_statistics.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/common/ws_wrapper.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/config/config.yaml +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/resources/__init__.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/resources/kaq_ddb_pool_stream_read_resources.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/resources/kaq_ddb_stream_init_resources.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/resources/kaq_ddb_stream_read_resources.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/resources/kaq_mysql_init_resources.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/resources/kaq_mysql_resources.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/resources/kaq_postgresql_resources.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/resources/kaq_quant_hive_resources.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/resources/kaq_redis_resources.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/utils/__init__.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/utils/dagster_job_check_utils.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/utils/dagster_utils.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/utils/date_util.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/utils/enums_utils.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/utils/error_utils.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/utils/hash_utils.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/utils/log_time_utils.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/utils/logger_utils.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/utils/mytt_utils.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/utils/signal_utils.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/utils/sqlite_utils.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/utils/uuid_utils.py +0 -0
- {kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/utils/yml_utils.py +0 -0
|
@@ -11,9 +11,10 @@ from typing_extensions import deprecated
|
|
|
11
11
|
|
|
12
12
|
mutex = threading.Lock()
|
|
13
13
|
|
|
14
|
+
# 方式一: 异步调用
|
|
14
15
|
class KaqQuantDdbStreamWriteRepository:
|
|
15
16
|
'''
|
|
16
|
-
|
|
17
|
+
异步不等待写入
|
|
17
18
|
'''
|
|
18
19
|
def __init__(self, host, port, user, passwd):
|
|
19
20
|
self.logger = get_logger(self)
|
|
@@ -88,7 +89,7 @@ class KaqQuantDdbStreamWriteRepository:
|
|
|
88
89
|
except Exception as e:
|
|
89
90
|
self.logger.error(f'KaqQuantDdbStreamWriteRepository.save2stream_batch is occured error: tableName is {ddb_table_name} - {str(e)} - {str(traceback.format_exc())}')
|
|
90
91
|
|
|
91
|
-
|
|
92
|
+
# 方式二: 同步调用,但有python端的队列等待
|
|
92
93
|
class DDBAsyncDFWriter:
|
|
93
94
|
def __init__(self, appender, batch_size=1000, flush_interval_ms=80):
|
|
94
95
|
self.logger = get_logger()
|
|
@@ -163,7 +164,7 @@ class KaqQuantDdbStreamWriteSyncRepository:
|
|
|
163
164
|
'''
|
|
164
165
|
使用appender直接写入的方式
|
|
165
166
|
'''
|
|
166
|
-
def __init__(self, host, port, user, passwd, tableName=None):
|
|
167
|
+
def __init__(self, host, port, user, passwd, tableName=None, batch_size=1000, flush_interval_ms=80):
|
|
167
168
|
if tableName is None:
|
|
168
169
|
raise ValueError(f'Error tableName, please set. tableName={tableName}')
|
|
169
170
|
self.tableName = tableName
|
|
@@ -176,7 +177,7 @@ class KaqQuantDdbStreamWriteSyncRepository:
|
|
|
176
177
|
self.session = ddb.session()
|
|
177
178
|
self.session.connect(host, port, user, passwd, tryReconnectNums=10, reconnect=True, keepAliveTime=1000, readTimeout=10, writeTimeout=5)
|
|
178
179
|
|
|
179
|
-
self.batch_writer = DDBAsyncDFWriter(ddb.TableAppender(table_name=self.tableName, conn=self.session))
|
|
180
|
+
self.batch_writer = DDBAsyncDFWriter(ddb.TableAppender(table_name=self.tableName, conn=self.session), batch_size=batch_size, flush_interval_ms=flush_interval_ms)
|
|
180
181
|
# 需要注意的是 fetchSize 取值不能小于 8192 (记录条数)
|
|
181
182
|
self.size = 8192
|
|
182
183
|
except Exception as e:
|
|
@@ -184,7 +185,7 @@ class KaqQuantDdbStreamWriteSyncRepository:
|
|
|
184
185
|
finally:
|
|
185
186
|
mutex.release()
|
|
186
187
|
|
|
187
|
-
@deprecated("请确保pandas数据与ddb表的数据类型一致.")
|
|
188
|
+
# @deprecated("请确保pandas数据与ddb表的数据类型一致.")
|
|
188
189
|
def insert(self, df : pd.DataFrame):
|
|
189
190
|
'''
|
|
190
191
|
dataframe中日期等类型与ddb流表中一致,例如:
|
|
@@ -196,7 +197,41 @@ class KaqQuantDdbStreamWriteSyncRepository:
|
|
|
196
197
|
except Exception as e:
|
|
197
198
|
self.logger.error(f'KaqQuantDdbTableStreamWriteRepository.insert is occured error: {str(e)} - {str(traceback.format_exc())}')
|
|
198
199
|
|
|
199
|
-
|
|
200
|
+
# 方式三: 异步调用, 但属于ddb的client内部的c++多线程解析与写入,适合一条条写入
|
|
201
|
+
class KaqQuantDdbStreamMTWWriteRepository:
|
|
202
|
+
def __init__(self, host, port, user, passwd, tableName=None, batch_size=1000, throttle=50, partitionCol=''):
|
|
203
|
+
self.logger = get_logger(self)
|
|
204
|
+
'''
|
|
205
|
+
创建ddb连接 && 添加ddb流数据表支持
|
|
206
|
+
'''
|
|
207
|
+
try:
|
|
208
|
+
mutex.acquire()
|
|
209
|
+
self.session = ddb.session(enableASYNC=True)
|
|
210
|
+
self.session.connect(host, port, user, passwd, tryReconnectNums=10, reconnect=True, keepAliveTime=1000, readTimeout=10, writeTimeout=5)
|
|
211
|
+
self.batch_writer = ddb.MultithreadedTableWriter(
|
|
212
|
+
host, port, user, passwd, tableName=tableName, dbPath='',
|
|
213
|
+
batchSize=batch_size, throttle=throttle, threadCount=1, partitionCol=partitionCol
|
|
214
|
+
)
|
|
215
|
+
except Exception as e:
|
|
216
|
+
self.logger.error(f'KaqQuantDdbStreamMTWWriteRepository.__init__ is occured error: {str(e)} - {str(traceback.format_exc())}')
|
|
217
|
+
finally:
|
|
218
|
+
mutex.release()
|
|
219
|
+
|
|
220
|
+
def insert(self, df:pd.DataFrame=pd.DataFrame()):
|
|
221
|
+
try:
|
|
222
|
+
for _, row in df.iterrows():
|
|
223
|
+
_args = row.tolist()
|
|
224
|
+
self.batch_writer.insert(*_args)
|
|
225
|
+
except Exception as e:
|
|
226
|
+
self.logger.error(f'KaqQuantDdbStreamMTWWriteRepository.insert is occured error: {str(e)} - {str(traceback.format_exc())}')
|
|
227
|
+
|
|
228
|
+
def stop(self):
|
|
229
|
+
'''
|
|
230
|
+
结束调用
|
|
231
|
+
'''
|
|
232
|
+
self.batch_writer.waitForThreadCompletion()
|
|
233
|
+
|
|
234
|
+
|
|
200
235
|
if __name__ == '__main__':
|
|
201
236
|
host, port, user, passwd = yml_utils.get_ddb_info(os.getcwd())
|
|
202
237
|
kaq = KaqQuantDdbStreamWriteRepository(host, port, user, passwd)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/common/api_interface.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/rest/api_client_base.py
RENAMED
|
File without changes
|
{kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/rest/api_server_base.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/ws/exchange/models.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/ws/instruction/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/ws/ws_client_base.py
RENAMED
|
File without changes
|
{kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/api/ws/ws_server_base.py
RENAMED
|
File without changes
|
|
File without changes
|
{kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/common/ddb_table_monitor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/common/monitor_group.py
RENAMED
|
File without changes
|
{kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/common/redis_table_monitor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kaq_quant_common-0.1.92 → kaq_quant_common-0.1.94}/kaq_quant_common/utils/log_time_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|