mns-scheduler 1.1.3.6__py3-none-any.whl → 1.1.4.0__py3-none-any.whl
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.
Potentially problematic release.
This version of mns-scheduler might be problematic. Click here for more details.
- mns_scheduler/common/redis/redis_msg_push_service.py +18 -0
- mns_scheduler/company_info/clean/company_info_clean_api.py +1 -1
- mns_scheduler/concept/clean/ths_concept_clean_api.py +56 -50
- mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py +24 -29
- mns_scheduler/concept/{common → ths}/detaill/ths_concept_detail_api.py +34 -6
- mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_new_index_api.py +19 -26
- mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py +9 -21
- mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py +12 -8
- mns_scheduler/risk/self/wei_pan_stock_api.py +1 -1
- mns_scheduler/zz_task/data_sync_task.py +1 -1
- {mns_scheduler-1.1.3.6.dist-info → mns_scheduler-1.1.4.0.dist-info}/METADATA +1 -1
- {mns_scheduler-1.1.3.6.dist-info → mns_scheduler-1.1.4.0.dist-info}/RECORD +17 -27
- mns_scheduler/backup/data/collection_move.py +0 -53
- mns_scheduler/backup/data/sync_data_to_local.py +0 -55
- mns_scheduler/backup/data/sync_remote_by_str_day.py +0 -33
- mns_scheduler/backup/em/__init__.py +0 -7
- mns_scheduler/backup/em/em_new_concept_his_sync.py +0 -99
- mns_scheduler/backup/em/em_new_concept_sync_common_api.py +0 -139
- mns_scheduler/backup/em/em_new_concept_sync_web.py +0 -55
- mns_scheduler/backup/ths/sync_ths_concept_by_ak_api.py +0 -103
- mns_scheduler/backup/ths/sync_ths_new_concept_by_web_api.py +0 -88
- mns_scheduler/concept/common/__init__.py +0 -0
- mns_scheduler/concept/common/detaill/__init__.py +0 -0
- /mns_scheduler/{backup → common}/__init__.py +0 -0
- /mns_scheduler/{backup/data → common/redis}/__init__.py +0 -0
- /mns_scheduler/{backup/ths → concept/ths/detaill}/__init__.py +0 -0
- {mns_scheduler-1.1.3.6.dist-info → mns_scheduler-1.1.4.0.dist-info}/WHEEL +0 -0
- {mns_scheduler-1.1.3.6.dist-info → mns_scheduler-1.1.4.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import sys
|
|
2
|
+
import os
|
|
3
|
+
|
|
4
|
+
file_path = os.path.abspath(__file__)
|
|
5
|
+
end = file_path.index('mns') + 16
|
|
6
|
+
project_path = file_path[0:end]
|
|
7
|
+
sys.path.append(project_path)
|
|
8
|
+
import redis
|
|
9
|
+
import mns_common.constant.redis_msg_constant as redis_msg_constant
|
|
10
|
+
|
|
11
|
+
# 连接到Redis服务器
|
|
12
|
+
r = redis.Redis(host='localhost', port=6379, db=0)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
# 发送消息
|
|
16
|
+
def send_redis_msg(message):
|
|
17
|
+
# 将消息推送到队列中
|
|
18
|
+
r.publish(redis_msg_constant.REDIS_MSG_TOPIC, message)
|
|
@@ -11,7 +11,7 @@ from datetime import datetime
|
|
|
11
11
|
from loguru import logger
|
|
12
12
|
import mns_scheduler.company_info.constant.company_constant_data as company_constant_data
|
|
13
13
|
import mns_common.constant.db_name_constant as db_name_constant
|
|
14
|
-
import mns_scheduler.concept.
|
|
14
|
+
import mns_scheduler.concept.ths.detaill.ths_concept_detail_api as ths_concept_detail_api
|
|
15
15
|
import mns_scheduler.company_info.base.sync_company_base_info_api as company_info_sync_api
|
|
16
16
|
|
|
17
17
|
mongodb_util = MongodbUtil('27017')
|
|
@@ -7,11 +7,12 @@ project_path = file_path[0:end]
|
|
|
7
7
|
sys.path.append(project_path)
|
|
8
8
|
from mns_common.db.MongodbUtil import MongodbUtil
|
|
9
9
|
import pandas as pd
|
|
10
|
-
import mns_scheduler.concept.
|
|
10
|
+
import mns_scheduler.concept.ths.detaill.ths_concept_detail_api as ths_concept_detail_api
|
|
11
11
|
import time
|
|
12
12
|
from loguru import logger
|
|
13
13
|
import mns_common.component.company.company_common_service_api as company_common_service_api
|
|
14
14
|
import mns_common.constant.db_name_constant as db_name_constant
|
|
15
|
+
import mns_common.component.concept.ths_concept_common_service_api as ths_concept_common_service_api
|
|
15
16
|
|
|
16
17
|
mongodb_util = MongodbUtil('27017')
|
|
17
18
|
|
|
@@ -21,59 +22,64 @@ def update_ths_concept_info():
|
|
|
21
22
|
ths_concept_list = mongodb_util.find_all_data(db_name_constant.THS_CONCEPT_LIST)
|
|
22
23
|
for ths_concept_one in ths_concept_list.itertuples():
|
|
23
24
|
try:
|
|
24
|
-
|
|
25
|
-
ths_stock_concept_detail_df = (mongodb_util
|
|
26
|
-
.find_query_data(db_name_constant.THS_STOCK_CONCEPT_DETAIL, query))
|
|
27
|
-
concept_count = ths_stock_concept_detail_df.shape[0]
|
|
28
|
-
ths_concept_list_one_df = ths_concept_list.loc[ths_concept_list['symbol'] == ths_concept_one.symbol]
|
|
29
|
-
ths_concept_list_one_df['concept_count'] = concept_count
|
|
30
|
-
|
|
31
|
-
ths_stock_concept_detail_df = ths_stock_concept_detail_df.reset_index(drop=True)
|
|
32
|
-
if 'industry' in ths_stock_concept_detail_df.columns:
|
|
33
|
-
del ths_stock_concept_detail_df['industry']
|
|
34
|
-
|
|
35
|
-
company_info_df = company_common_service_api.get_company_info_industry()
|
|
36
|
-
company_info_df = company_info_df[['_id', 'industry']]
|
|
37
|
-
company_info_df = company_info_df.loc[
|
|
38
|
-
company_info_df['_id'].isin(list(ths_stock_concept_detail_df['symbol']))]
|
|
39
|
-
company_info_df = company_info_df.set_index(['_id'], drop=True)
|
|
40
|
-
|
|
41
|
-
ths_stock_concept_detail_df = ths_stock_concept_detail_df.set_index(['symbol'], drop=False)
|
|
42
|
-
ths_stock_concept_detail_df = pd.merge(ths_stock_concept_detail_df, company_info_df,
|
|
43
|
-
how='outer',
|
|
44
|
-
left_index=True, right_index=True)
|
|
45
|
-
ths_stock_concept_detail_df.dropna(subset=['industry'], axis=0, inplace=True)
|
|
46
|
-
|
|
47
|
-
grouped = ths_stock_concept_detail_df.groupby('industry')
|
|
48
|
-
result_list = grouped.size()
|
|
49
|
-
ths_concept_group = pd.DataFrame(result_list, columns=['number'])
|
|
50
|
-
ths_concept_group['industry'] = ths_concept_group.index
|
|
51
|
-
ths_concept_group = ths_concept_group.sort_values(by=['number'], ascending=False)
|
|
52
|
-
if ths_concept_group.shape[0] >= 2:
|
|
53
|
-
first_relevance_industry = list(ths_concept_group.iloc[0:1]['industry'])[0]
|
|
54
|
-
first_relevance_industry_number = list(ths_concept_group.iloc[0:1]['number'])[0]
|
|
55
|
-
second_relevance_industry = list(ths_concept_group.iloc[1:2]['industry'])[0]
|
|
56
|
-
second_relevance_industry_number = list(ths_concept_group.iloc[1:2]['number'])[0]
|
|
57
|
-
else:
|
|
58
|
-
first_relevance_industry = list(ths_concept_group.iloc[0:1]['industry'])[0]
|
|
59
|
-
first_relevance_industry_number = list(ths_concept_group.iloc[0:1]['number'])[0]
|
|
60
|
-
second_relevance_industry = '无'
|
|
61
|
-
second_relevance_industry_number = 0
|
|
62
|
-
ths_concept_list_one_df['first_relevance_industry'] = first_relevance_industry
|
|
63
|
-
ths_concept_list_one_df['second_relevance_industry'] = second_relevance_industry
|
|
64
|
-
ths_concept_list_one_df['first_relevance_industry_number'] = first_relevance_industry_number
|
|
65
|
-
ths_concept_list_one_df['second_relevance_industry_number'] = second_relevance_industry_number
|
|
66
|
-
|
|
67
|
-
ths_stock_concept_detail_df['first_relevance_industry'] = first_relevance_industry
|
|
68
|
-
ths_stock_concept_detail_df['second_relevance_industry'] = second_relevance_industry
|
|
69
|
-
|
|
70
|
-
mongodb_util.save_mongo(ths_concept_list_one_df, db_name_constant.THS_CONCEPT_LIST)
|
|
71
|
-
mongodb_util.save_mongo(ths_stock_concept_detail_df, db_name_constant.THS_STOCK_CONCEPT_DETAIL)
|
|
72
|
-
|
|
25
|
+
update_one_concept_relevance_industry(ths_concept_one.symbol)
|
|
73
26
|
except BaseException as e:
|
|
74
27
|
logger.error("更新概念信息异常:{},{}", e, ths_concept_one.name)
|
|
75
28
|
|
|
76
29
|
|
|
30
|
+
# 更新一个概念行业相关
|
|
31
|
+
def update_one_concept_relevance_industry(concept_code):
|
|
32
|
+
query = {'concept_code': concept_code}
|
|
33
|
+
ths_stock_concept_detail_df = (mongodb_util
|
|
34
|
+
.find_query_data(db_name_constant.THS_STOCK_CONCEPT_DETAIL, query))
|
|
35
|
+
concept_count = ths_stock_concept_detail_df.shape[0]
|
|
36
|
+
ths_concept_list = ths_concept_common_service_api.get_all_ths_concept()
|
|
37
|
+
ths_concept_list_one_df = ths_concept_list.loc[ths_concept_list['symbol'] == concept_code]
|
|
38
|
+
ths_concept_list_one_df['concept_count'] = concept_count
|
|
39
|
+
|
|
40
|
+
ths_stock_concept_detail_df = ths_stock_concept_detail_df.reset_index(drop=True)
|
|
41
|
+
if 'industry' in ths_stock_concept_detail_df.columns:
|
|
42
|
+
del ths_stock_concept_detail_df['industry']
|
|
43
|
+
|
|
44
|
+
company_info_df = company_common_service_api.get_company_info_industry()
|
|
45
|
+
company_info_df = company_info_df[['_id', 'industry']]
|
|
46
|
+
company_info_df = company_info_df.loc[
|
|
47
|
+
company_info_df['_id'].isin(list(ths_stock_concept_detail_df['symbol']))]
|
|
48
|
+
company_info_df = company_info_df.set_index(['_id'], drop=True)
|
|
49
|
+
|
|
50
|
+
ths_stock_concept_detail_df = ths_stock_concept_detail_df.set_index(['symbol'], drop=False)
|
|
51
|
+
ths_stock_concept_detail_df = pd.merge(ths_stock_concept_detail_df, company_info_df,
|
|
52
|
+
how='outer',
|
|
53
|
+
left_index=True, right_index=True)
|
|
54
|
+
ths_stock_concept_detail_df.dropna(subset=['industry'], axis=0, inplace=True)
|
|
55
|
+
|
|
56
|
+
grouped = ths_stock_concept_detail_df.groupby('industry')
|
|
57
|
+
result_list = grouped.size()
|
|
58
|
+
ths_concept_group = pd.DataFrame(result_list, columns=['number'])
|
|
59
|
+
ths_concept_group['industry'] = ths_concept_group.index
|
|
60
|
+
ths_concept_group = ths_concept_group.sort_values(by=['number'], ascending=False)
|
|
61
|
+
if ths_concept_group.shape[0] >= 2:
|
|
62
|
+
first_relevance_industry = list(ths_concept_group.iloc[0:1]['industry'])[0]
|
|
63
|
+
first_relevance_industry_number = list(ths_concept_group.iloc[0:1]['number'])[0]
|
|
64
|
+
second_relevance_industry = list(ths_concept_group.iloc[1:2]['industry'])[0]
|
|
65
|
+
second_relevance_industry_number = list(ths_concept_group.iloc[1:2]['number'])[0]
|
|
66
|
+
else:
|
|
67
|
+
first_relevance_industry = list(ths_concept_group.iloc[0:1]['industry'])[0]
|
|
68
|
+
first_relevance_industry_number = list(ths_concept_group.iloc[0:1]['number'])[0]
|
|
69
|
+
second_relevance_industry = '无'
|
|
70
|
+
second_relevance_industry_number = 0
|
|
71
|
+
ths_concept_list_one_df['first_relevance_industry'] = first_relevance_industry
|
|
72
|
+
ths_concept_list_one_df['second_relevance_industry'] = second_relevance_industry
|
|
73
|
+
ths_concept_list_one_df['first_relevance_industry_number'] = first_relevance_industry_number
|
|
74
|
+
ths_concept_list_one_df['second_relevance_industry_number'] = second_relevance_industry_number
|
|
75
|
+
|
|
76
|
+
ths_stock_concept_detail_df['first_relevance_industry'] = first_relevance_industry
|
|
77
|
+
ths_stock_concept_detail_df['second_relevance_industry'] = second_relevance_industry
|
|
78
|
+
|
|
79
|
+
mongodb_util.save_mongo(ths_concept_list_one_df, db_name_constant.THS_CONCEPT_LIST)
|
|
80
|
+
mongodb_util.save_mongo(ths_stock_concept_detail_df, db_name_constant.THS_STOCK_CONCEPT_DETAIL)
|
|
81
|
+
|
|
82
|
+
|
|
77
83
|
# 更新空名字
|
|
78
84
|
def update_null_name():
|
|
79
85
|
query = {"_id": {'$gte': 886025}}
|
|
@@ -13,32 +13,27 @@ mongodb_util = MongodbUtil('27017')
|
|
|
13
13
|
import mns_common.api.msg.push_msg_api as push_msg_api
|
|
14
14
|
import mns_scheduler.company_info.base.sync_company_base_info_api as company_info_sync_api
|
|
15
15
|
import mns_scheduler.company_info.clean.company_info_clean_api as company_info_clean_api
|
|
16
|
-
import mns_scheduler.concept.
|
|
16
|
+
import mns_scheduler.concept.ths.detaill.ths_concept_detail_api as ths_concept_detail_api
|
|
17
17
|
import mns_common.component.concept.ths_concept_common_service_api as ths_concept_common_service_api
|
|
18
18
|
import mns_common.component.company.company_common_service_new_api as company_common_service_new_api
|
|
19
19
|
import mns_common.utils.data_frame_util as data_frame_util
|
|
20
20
|
import mns_common.constant.db_name_constant as db_name_constant
|
|
21
|
+
import mns_scheduler.common.redis.redis_msg_push_service as redis_msg_push_service
|
|
22
|
+
import mns_scheduler.concept.clean.ths_concept_clean_api as ths_concept_clean_api
|
|
23
|
+
import mns_common.constant.redis_msg_constant as redis_msg_constant
|
|
21
24
|
|
|
22
|
-
max_concept_code = 886110
|
|
23
25
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
"symbol",
|
|
27
|
-
"name",
|
|
28
|
-
"now_price",
|
|
29
|
-
"chg",
|
|
30
|
-
"change",
|
|
31
|
-
"exchange",
|
|
32
|
-
"amount",
|
|
33
|
-
"concept_code",
|
|
34
|
-
]
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
# 推送到手机
|
|
38
|
-
def push_msg_to_we_chat_web(concept_code, concept_name, url):
|
|
26
|
+
# 推送消息
|
|
27
|
+
def push_msg_to_we_chat_and_redis(concept_code, concept_name, url):
|
|
39
28
|
msg = "概念代码:" + str(concept_code) + "," + "概念名称:" + concept_name + "," + "url: " + url
|
|
40
29
|
title = "新增同花顺概念:" + str(concept_code) + "-" + concept_name
|
|
30
|
+
# 推送到微信
|
|
41
31
|
push_msg_api.push_msg_to_wechat(title, msg)
|
|
32
|
+
# 项目之前推送消息
|
|
33
|
+
redis_msg_push_service.send_redis_msg(redis_msg_constant.THS_NEW_CONCEPT_ADD_MSG)
|
|
34
|
+
|
|
35
|
+
# 更新ths概念信息
|
|
36
|
+
ths_concept_clean_api.update_ths_concept_info()
|
|
42
37
|
|
|
43
38
|
|
|
44
39
|
# 保存新概念信息到数据库
|
|
@@ -50,18 +45,6 @@ def save_ths_concept_list(concept_code, concept_name, str_day, str_now_time):
|
|
|
50
45
|
mongodb_util.save_mongo(ths_concept_list, 'ths_concept_list')
|
|
51
46
|
|
|
52
47
|
|
|
53
|
-
# 获取最大概念代码
|
|
54
|
-
def get_max_concept_code():
|
|
55
|
-
query = {"symbol": {'$ne': 'null'}, "success": True}
|
|
56
|
-
ths_concept_max = mongodb_util.descend_query(query, 'ths_concept_list', 'symbol', 1)
|
|
57
|
-
if ths_concept_max.shape[0] == 0:
|
|
58
|
-
concept_code = 885284
|
|
59
|
-
else:
|
|
60
|
-
concept_code = list(ths_concept_max['symbol'])[0]
|
|
61
|
-
|
|
62
|
-
return concept_code
|
|
63
|
-
|
|
64
|
-
|
|
65
48
|
# 保存新概念详细信息到数据库
|
|
66
49
|
def save_ths_concept_detail(new_concept_symbol_df,
|
|
67
50
|
concept_name, str_day,
|
|
@@ -179,6 +162,18 @@ def update_company_info(new_concept_symbol_df):
|
|
|
179
162
|
company_common_service_api.company_info_industry_cache_clear()
|
|
180
163
|
|
|
181
164
|
|
|
165
|
+
# 获取最大概念代码
|
|
166
|
+
def get_max_concept_code():
|
|
167
|
+
query = {"symbol": {'$ne': 'null'}, "success": True}
|
|
168
|
+
ths_concept_max = mongodb_util.descend_query(query, 'ths_concept_list', 'symbol', 1)
|
|
169
|
+
if ths_concept_max.shape[0] == 0:
|
|
170
|
+
concept_code = 885284
|
|
171
|
+
else:
|
|
172
|
+
concept_code = list(ths_concept_max['symbol'])[0]
|
|
173
|
+
|
|
174
|
+
return concept_code
|
|
175
|
+
|
|
176
|
+
|
|
182
177
|
def get_concept_detail_info_web(concept_code):
|
|
183
178
|
new_concept_symbol_list = ths_concept_detail_api.get_ths_concept_detail(concept_code, None)
|
|
184
179
|
if new_concept_symbol_list is None or new_concept_symbol_list.shape[0] == 0:
|
|
@@ -16,6 +16,11 @@ import math
|
|
|
16
16
|
from loguru import logger
|
|
17
17
|
import pandas as pd
|
|
18
18
|
import mns_common.utils.data_frame_util as data_frame_util
|
|
19
|
+
import time
|
|
20
|
+
from datetime import datetime
|
|
21
|
+
import mns_scheduler.concept.ths.common.ths_concept_sync_common_api as ths_concept_sync_common_api
|
|
22
|
+
import mns_scheduler.common.redis.redis_msg_push_service as redis_msg_push_service
|
|
23
|
+
import mns_common.constant.redis_msg_constant as redis_msg_constant
|
|
19
24
|
|
|
20
25
|
|
|
21
26
|
def get_ths_concept_detail(concept_code, concept_name):
|
|
@@ -55,6 +60,9 @@ def get_ths_concept_detail(concept_code, concept_name):
|
|
|
55
60
|
not_in_ths_concept_detail_by_explain = result_df.loc[~(
|
|
56
61
|
result_df['symbol'].isin(ths_concept_detail_by_explain['symbol']))]
|
|
57
62
|
result_df = pd.concat([ths_concept_detail_by_explain_new, not_in_ths_concept_detail_by_explain])
|
|
63
|
+
result_df['concept_code'] = concept_code
|
|
64
|
+
result_df['change'] = 0
|
|
65
|
+
result_df['index'] = 0
|
|
58
66
|
return result_df
|
|
59
67
|
|
|
60
68
|
|
|
@@ -188,10 +196,30 @@ def merge_data_common_fun(result_df, real_time_quotes_all_stocks):
|
|
|
188
196
|
return result_df
|
|
189
197
|
|
|
190
198
|
|
|
199
|
+
# 同步概念详情到db
|
|
200
|
+
def sync_ths_concept_detail_to_db(concept_code, concept_name):
|
|
201
|
+
new_concept_symbol_detail_df = get_ths_concept_detail(concept_code, concept_name)
|
|
202
|
+
if data_frame_util.is_empty(new_concept_symbol_detail_df):
|
|
203
|
+
time.sleep(10)
|
|
204
|
+
return None
|
|
205
|
+
now_date = datetime.now()
|
|
206
|
+
str_now_time = now_date.strftime('%Y-%m-%d %H:%M:%S')
|
|
207
|
+
time.sleep(1)
|
|
208
|
+
str_day = now_date.strftime('%Y-%m-%d')
|
|
209
|
+
new_concept_symbol_detail_df.loc[:, 'way'] = 'index_sync'
|
|
210
|
+
ths_concept_sync_common_api.save_ths_concept_detail(new_concept_symbol_detail_df,
|
|
211
|
+
concept_name,
|
|
212
|
+
str_day,
|
|
213
|
+
str_now_time, concept_code)
|
|
214
|
+
|
|
215
|
+
# 项目之前推送消息
|
|
216
|
+
redis_msg_push_service.send_redis_msg(redis_msg_constant.THS_NEW_CONCEPT_ADD_MSG)
|
|
217
|
+
|
|
218
|
+
|
|
191
219
|
if __name__ == '__main__':
|
|
192
|
-
|
|
193
|
-
real_time_quotes_all_stocks_df = east_money_stock_api.get_real_time_quotes_all_stocks()
|
|
194
|
-
get_ths_concept_detail_by_explain('
|
|
195
|
-
get_ths_concept_detail_from_web('
|
|
196
|
-
get_ths_concept_detail('
|
|
197
|
-
get_ths_concept_detail_by_wen_cai('
|
|
220
|
+
sync_ths_concept_detail_to_db('886084', '光纤概念')
|
|
221
|
+
# real_time_quotes_all_stocks_df = east_money_stock_api.get_real_time_quotes_all_stocks()
|
|
222
|
+
# get_ths_concept_detail_by_explain('886084', real_time_quotes_all_stocks_df)
|
|
223
|
+
# get_ths_concept_detail_from_web('886084', real_time_quotes_all_stocks_df)
|
|
224
|
+
# get_ths_concept_detail('886084', '光纤概念')
|
|
225
|
+
# get_ths_concept_detail_by_wen_cai('光纤概念', real_time_quotes_all_stocks_df)
|
|
@@ -14,10 +14,13 @@ from mns_common.db.MongodbUtil import MongodbUtil
|
|
|
14
14
|
from datetime import datetime
|
|
15
15
|
import mns_scheduler.concept.clean.ths_concept_clean_api as ths_concept_clean_api
|
|
16
16
|
import pandas as pd
|
|
17
|
-
import mns_scheduler.concept.
|
|
17
|
+
import mns_scheduler.concept.ths.detaill.ths_concept_detail_api as ths_concept_detail_api
|
|
18
18
|
import mns_common.constant.db_name_constant as db_name_constant
|
|
19
|
+
import mns_scheduler.common.redis.redis_msg_push_service as redis_msg_push_service
|
|
20
|
+
import mns_common.constant.redis_msg_constant as redis_msg_constant
|
|
19
21
|
|
|
20
22
|
mongodb_util = MongodbUtil('27017')
|
|
23
|
+
import mns_common.component.concept.ths_concept_common_service_api as ths_concept_common_service_api
|
|
21
24
|
|
|
22
25
|
|
|
23
26
|
def sync_ths_concept_new_index():
|
|
@@ -28,17 +31,17 @@ def sync_ths_concept_new_index():
|
|
|
28
31
|
|
|
29
32
|
|
|
30
33
|
'''
|
|
31
|
-
同步ths新概念 通过app
|
|
34
|
+
同步ths新概念 通过app搜索代码
|
|
32
35
|
'''
|
|
33
36
|
|
|
34
37
|
|
|
35
38
|
def sync_ths_concept_new_index_from_app():
|
|
36
39
|
# 当前最大概念代码
|
|
37
40
|
max_concept_code = ths_concept_sync_common_api.get_max_concept_code()
|
|
38
|
-
#
|
|
41
|
+
# 最大概念代码上限
|
|
39
42
|
max_concept_code_limit = max_concept_code + 2
|
|
40
43
|
# 同花顺概念列表
|
|
41
|
-
ths_concept_list_exist =
|
|
44
|
+
ths_concept_list_exist = ths_concept_common_service_api.get_all_ths_concept()
|
|
42
45
|
# 同步向上3次
|
|
43
46
|
while max_concept_code <= max_concept_code_limit:
|
|
44
47
|
try:
|
|
@@ -76,16 +79,10 @@ def sync_ths_concept_new_index_from_app():
|
|
|
76
79
|
diff_one_df = pd.DataFrame(new_concept_one, index=[1])
|
|
77
80
|
mongodb_util.save_mongo(diff_one_df, db_name_constant.THS_CONCEPT_LIST)
|
|
78
81
|
# 新增概念信息处理
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
continue
|
|
84
|
-
new_concept_symbol_detail_df.loc[:, 'way'] = 'index_sync'
|
|
85
|
-
ths_concept_sync_common_api.save_ths_concept_detail(new_concept_symbol_detail_df,
|
|
86
|
-
concept_name,
|
|
87
|
-
str_day,
|
|
88
|
-
str_now_time, concept_code)
|
|
82
|
+
ths_concept_sync_common_api.push_msg_to_we_chat_and_redis(concept_code, concept_name,
|
|
83
|
+
url)
|
|
84
|
+
# 同步概念详情到db
|
|
85
|
+
ths_concept_detail_api.sync_ths_concept_detail_to_db(concept_code, concept_name)
|
|
89
86
|
# 更新ths概念统计信息
|
|
90
87
|
ths_concept_clean_api.update_ths_concept_info()
|
|
91
88
|
|
|
@@ -96,7 +93,7 @@ def sync_ths_concept_new_index_from_app():
|
|
|
96
93
|
|
|
97
94
|
|
|
98
95
|
'''
|
|
99
|
-
同步新概念 by ths detail
|
|
96
|
+
同步新概念 by ths detail 通过详情判断
|
|
100
97
|
'''
|
|
101
98
|
|
|
102
99
|
|
|
@@ -142,7 +139,8 @@ def sync_ths_concept_new_index_from_detail():
|
|
|
142
139
|
diff_one_df = pd.DataFrame(new_concept_one, index=[1])
|
|
143
140
|
mongodb_util.save_mongo(diff_one_df, db_name_constant.THS_CONCEPT_LIST)
|
|
144
141
|
# 新增概念信息处理
|
|
145
|
-
|
|
142
|
+
ths_concept_sync_common_api.push_msg_to_we_chat_and_redis(concept_code, concept_name,
|
|
143
|
+
url)
|
|
146
144
|
|
|
147
145
|
new_concept_symbol_detail_df.loc[:, 'way'] = 'index_sync'
|
|
148
146
|
ths_concept_sync_common_api.save_ths_concept_detail(new_concept_symbol_detail_df,
|
|
@@ -150,21 +148,16 @@ def sync_ths_concept_new_index_from_detail():
|
|
|
150
148
|
str_day,
|
|
151
149
|
str_now_time,
|
|
152
150
|
concept_code)
|
|
153
|
-
# 更新ths概念统计信息
|
|
154
|
-
ths_concept_clean_api.update_ths_concept_info()
|
|
155
151
|
|
|
156
152
|
logger.info("新增同花顺新概念:{}", concept_name)
|
|
157
153
|
|
|
158
154
|
except BaseException as e:
|
|
159
155
|
logger.error("同步新增概念代码:{},信息异常:{}", max_concept_code, e)
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
#
|
|
163
|
-
|
|
164
|
-
# 推送新概念信息到微信
|
|
165
|
-
ths_concept_sync_common_api.push_msg_to_we_chat_web(concept_code, concept_name,
|
|
166
|
-
url)
|
|
156
|
+
# 更新ths概念统计信息
|
|
157
|
+
ths_concept_clean_api.update_ths_concept_info()
|
|
158
|
+
# 项目之前推送消息
|
|
159
|
+
redis_msg_push_service.send_redis_msg(redis_msg_constant.THS_NEW_CONCEPT_ADD_MSG)
|
|
167
160
|
|
|
168
161
|
|
|
169
162
|
if __name__ == '__main__':
|
|
170
|
-
|
|
163
|
+
sync_ths_concept_new_index()
|
|
@@ -5,36 +5,24 @@ file_path = os.path.abspath(__file__)
|
|
|
5
5
|
end = file_path.index('mns') + 17
|
|
6
6
|
project_path = file_path[0:end]
|
|
7
7
|
sys.path.append(project_path)
|
|
8
|
-
|
|
9
|
-
import time
|
|
10
8
|
import datetime
|
|
11
|
-
|
|
12
|
-
import
|
|
13
|
-
|
|
14
|
-
mongodb_util = MongodbUtil('27017')
|
|
9
|
+
import mns_scheduler.concept.ths.detaill.ths_concept_detail_api as ths_concept_detail_api
|
|
10
|
+
import mns_common.component.concept.ths_concept_common_service_api as ths_concept_common_service_api
|
|
11
|
+
from loguru import logger
|
|
15
12
|
|
|
16
13
|
|
|
17
14
|
# 通过概念指数同步所有概念下的股票组成
|
|
18
15
|
|
|
19
16
|
# 同步概念下所有股票组成
|
|
20
17
|
def update_concept_all_detail_info():
|
|
21
|
-
|
|
22
|
-
new_concept_list = mongodb_util.find_query_data("ths_concept_list", query)
|
|
18
|
+
new_concept_list = ths_concept_common_service_api.get_all_ths_concept()
|
|
23
19
|
new_concept_list = new_concept_list.sort_values(by=['symbol'], ascending=False)
|
|
24
|
-
if new_concept_list.shape[0] > 0:
|
|
25
|
-
for one_concept in new_concept_list.itertuples():
|
|
26
|
-
now_date_time = datetime.datetime.now()
|
|
27
|
-
str_day = now_date_time.strftime('%Y-%m-%d')
|
|
28
|
-
str_now_time = now_date_time.strftime('%Y-%m-%d %H:%M:%S')
|
|
29
|
-
new_concept_symbol_df = ths_concept_sync_common_api.get_concept_detail_info_web(one_concept.symbol)
|
|
30
20
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
ths_concept_sync_common_api.save_ths_concept_detail(new_concept_symbol_df, one_concept.name,
|
|
37
|
-
str_day, str_now_time, one_concept.symbol)
|
|
21
|
+
for one_concept in new_concept_list.itertuples():
|
|
22
|
+
try:
|
|
23
|
+
ths_concept_detail_api.sync_ths_concept_detail_to_db(one_concept.symbol, one_concept.name)
|
|
24
|
+
except BaseException as e:
|
|
25
|
+
logger.error("同步概念下所有股票组成异常:{},{},{}", one_concept.symbol, one_concept.name, e)
|
|
38
26
|
|
|
39
27
|
|
|
40
28
|
if __name__ == '__main__':
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import os
|
|
2
2
|
import sys
|
|
3
|
-
import pandas as pd
|
|
4
3
|
import mns_common.api.ths.concept.web.ths_concept_detail_web as ths_concept_detail_web
|
|
5
4
|
import mns_common.api.em.east_money_stock_api as east_money_stock_api
|
|
6
5
|
import mns_common.component.common_service_fun_api as common_service_fun_api
|
|
@@ -13,6 +12,9 @@ import mns_scheduler.concept.ths.common.ths_concept_sync_common_api as ths_conce
|
|
|
13
12
|
import threading
|
|
14
13
|
import mns_scheduler.concept.ths.common.ths_concept_update_common_api as ths_concept_update_common_api
|
|
15
14
|
import mns_common.utils.date_handle_util as date_handle_util
|
|
15
|
+
import mns_common.constant.db_name_constant as db_name_constant
|
|
16
|
+
import mns_scheduler.common.redis.redis_msg_push_service as redis_msg_push_service
|
|
17
|
+
import mns_common.constant.redis_msg_constant as redis_msg_constant
|
|
16
18
|
|
|
17
19
|
file_path = os.path.abspath(__file__)
|
|
18
20
|
end = file_path.index('mns') + 17
|
|
@@ -21,16 +23,16 @@ sys.path.append(project_path)
|
|
|
21
23
|
mongodb_util = MongodbUtil('27017')
|
|
22
24
|
# 分页大小
|
|
23
25
|
MAX_PAGE_NUMBER = 2500
|
|
24
|
-
# 获取单只股票新增概念
|
|
25
26
|
|
|
26
|
-
|
|
27
|
+
|
|
28
|
+
# 获取单只股票新增概念
|
|
27
29
|
|
|
28
30
|
|
|
29
31
|
def create_index():
|
|
30
|
-
mongodb_util.create_index(
|
|
31
|
-
mongodb_util.create_index(
|
|
32
|
-
mongodb_util.create_index(
|
|
33
|
-
mongodb_util.create_index(
|
|
32
|
+
mongodb_util.create_index(db_name_constant.THS_STOCK_CONCEPT_DETAIL_APP, [("symbol", 1)])
|
|
33
|
+
mongodb_util.create_index(db_name_constant.THS_STOCK_CONCEPT_DETAIL_APP, [("str_day", 1)])
|
|
34
|
+
mongodb_util.create_index(db_name_constant.THS_STOCK_CONCEPT_DETAIL_APP, [("title", 1)])
|
|
35
|
+
mongodb_util.create_index(db_name_constant.THS_STOCK_CONCEPT_DETAIL_APP, [("str_now_date", 1)])
|
|
34
36
|
|
|
35
37
|
|
|
36
38
|
# 同步新概念到详情表中
|
|
@@ -52,6 +54,8 @@ def sync_new_concept_to_ths_detail(symbol_add_new_concept_df, str_day, str_now_t
|
|
|
52
54
|
|
|
53
55
|
except BaseException as e:
|
|
54
56
|
logger.error("转换同花顺概念异常:{},{}", new_concept_one, e)
|
|
57
|
+
# 项目之前推送消息
|
|
58
|
+
redis_msg_push_service.send_redis_msg(redis_msg_constant.THS_NEW_CONCEPT_ADD_MSG)
|
|
55
59
|
|
|
56
60
|
|
|
57
61
|
# 保存数据到对比
|
|
@@ -60,7 +64,7 @@ def save_data_to_db(ths_concept_df):
|
|
|
60
64
|
if data_frame_util.is_empty(ths_concept_df):
|
|
61
65
|
return
|
|
62
66
|
json_data = ths_concept_df.to_dict(orient='records')
|
|
63
|
-
mongodb_util.save_mongo_json(json_data,
|
|
67
|
+
mongodb_util.save_mongo_json(json_data, db_name_constant.THS_STOCK_CONCEPT_DETAIL_APP)
|
|
64
68
|
|
|
65
69
|
|
|
66
70
|
# 对比数据库和接口概念详情的差值
|
|
@@ -6,7 +6,7 @@ end = file_path.index('mns') + 16
|
|
|
6
6
|
project_path = file_path[0:end]
|
|
7
7
|
sys.path.append(project_path)
|
|
8
8
|
|
|
9
|
-
import mns_scheduler.concept.
|
|
9
|
+
import mns_scheduler.concept.ths.detaill.ths_concept_detail_api as ths_concept_detail_api
|
|
10
10
|
import mns_common.component.self_choose.black_list_service_api as black_list_service_api
|
|
11
11
|
from datetime import datetime
|
|
12
12
|
from loguru import logger
|
|
@@ -437,7 +437,7 @@ blockingScheduler.add_job(update_best_choose_plate_relation, 'cron', hour='09,18
|
|
|
437
437
|
blockingScheduler.add_job(sync_kpl_best_his_quotes, 'cron', hour='18,22', minute='25')
|
|
438
438
|
|
|
439
439
|
# 更新开盘啦指数关系
|
|
440
|
-
blockingScheduler.add_job(sync_position, 'cron', hour='0,
|
|
440
|
+
blockingScheduler.add_job(sync_position, 'cron', hour='0,09', minute='10')
|
|
441
441
|
|
|
442
442
|
# 同步高风险股票
|
|
443
443
|
blockingScheduler.add_job(sync_high_risk_stocks, 'cron', hour='0,09,12,16', minute='20')
|
|
@@ -1,23 +1,14 @@
|
|
|
1
1
|
mns_scheduler/__init__.py,sha256=Tyvi_iQlv3jz59EdH67Mycnt9CSixcWPQoJwu55bOq0,165
|
|
2
|
-
mns_scheduler/backup/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
|
|
3
|
-
mns_scheduler/backup/data/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
|
|
4
|
-
mns_scheduler/backup/data/collection_move.py,sha256=WZN6-312jBbWrNqXCSk-0yTQ60ajUUWAqr2exVfotKU,2005
|
|
5
|
-
mns_scheduler/backup/data/sync_data_to_local.py,sha256=o_kEcBoG8-CjLS7f_cXUBMo_z5MHn2z1WYnaobNDW90,1737
|
|
6
|
-
mns_scheduler/backup/data/sync_remote_by_str_day.py,sha256=uEi-8j5gqRvWoJwIJGAr1Dc7UCmpXAh7q1IMS-Z88Fw,1220
|
|
7
|
-
mns_scheduler/backup/em/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
8
|
-
mns_scheduler/backup/em/em_new_concept_his_sync.py,sha256=Yqbuz9VE9433o0Z6BvDo5adhj3lK4vmN66XNQBIdC1k,4992
|
|
9
|
-
mns_scheduler/backup/em/em_new_concept_sync_common_api.py,sha256=KnNCf0KXy31GFwF1-wbbkfDM-H7-cEtcVoCwl4QmoVs,7083
|
|
10
|
-
mns_scheduler/backup/em/em_new_concept_sync_web.py,sha256=wVS0yLyPYzpcxfWAuUqmqbYkjw9wjpo48CvLSZFckzw,2334
|
|
11
|
-
mns_scheduler/backup/ths/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
12
|
-
mns_scheduler/backup/ths/sync_ths_concept_by_ak_api.py,sha256=8QBiRKc0Q3ez-kBwvz7G8HrFDD_ANd8smOpQtGyvKIs,5371
|
|
13
|
-
mns_scheduler/backup/ths/sync_ths_new_concept_by_web_api.py,sha256=dLd2V67AFnE9xf5H8YGyaJ0j7z8FhtTemFVGOuOeHJ4,4087
|
|
14
2
|
mns_scheduler/big_deal/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
15
3
|
mns_scheduler/big_deal/ths_big_deal_sync.py,sha256=aMFj-_pLprh4vGjSSzmr_tlYoPA0L4Lm0SkLRkQwIiw,4564
|
|
4
|
+
mns_scheduler/common/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
|
|
5
|
+
mns_scheduler/common/redis/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
|
|
6
|
+
mns_scheduler/common/redis/redis_msg_push_service.py,sha256=uJxiwc5SVQnAX7Pc_w7tgXBK_H2SP1LhjgdL2QZQnm8,472
|
|
16
7
|
mns_scheduler/company_info/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
17
8
|
mns_scheduler/company_info/base/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
|
|
18
9
|
mns_scheduler/company_info/base/sync_company_base_info_api.py,sha256=NRuwc5oJF9Ngt932OrnG76oP22OmkjbGgcWKgWplafg,19106
|
|
19
10
|
mns_scheduler/company_info/clean/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
|
|
20
|
-
mns_scheduler/company_info/clean/company_info_clean_api.py,sha256=
|
|
11
|
+
mns_scheduler/company_info/clean/company_info_clean_api.py,sha256=n3kxsqihPjKJvGDkAjMYqB_U2EPemOi1Yjez5yOYJeo,4858
|
|
21
12
|
mns_scheduler/company_info/constant/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
|
|
22
13
|
mns_scheduler/company_info/constant/company_constant_data.py,sha256=XIM81fA4PNalVJNBYXiMddkcW012fFtofoPGYy2VtD0,16001
|
|
23
14
|
mns_scheduler/company_info/de_list_stock/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
|
|
@@ -27,19 +18,18 @@ mns_scheduler/company_info/remark/company_remark_info_sync.py,sha256=hzQ8uBK4-od
|
|
|
27
18
|
mns_scheduler/concept/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
28
19
|
mns_scheduler/concept/clean/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
29
20
|
mns_scheduler/concept/clean/kpl_concept_clean_api.py,sha256=xxIIgrXLI6xLf10t4unJa7aMB_QeKeki1HJVeXsntkY,4512
|
|
30
|
-
mns_scheduler/concept/clean/ths_concept_clean_api.py,sha256=
|
|
31
|
-
mns_scheduler/concept/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
32
|
-
mns_scheduler/concept/common/detaill/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
33
|
-
mns_scheduler/concept/common/detaill/ths_concept_detail_api.py,sha256=Au_l7SVcp4kRaR2vo1FP3BmYHeRI9fkOk_sTwzpRYw4,9435
|
|
21
|
+
mns_scheduler/concept/clean/ths_concept_clean_api.py,sha256=wxdT5Eb3awHW9HuFlgSe8-C6sC6TNaDYozr8VvNdYe0,5953
|
|
34
22
|
mns_scheduler/concept/ths/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
35
23
|
mns_scheduler/concept/ths/common/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
36
|
-
mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py,sha256=
|
|
24
|
+
mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py,sha256=nvPo4EW7nsULLoZhRF5E5a6Qm4svd6EScWUsB0MmDa0,8416
|
|
37
25
|
mns_scheduler/concept/ths/common/ths_concept_update_common_api.py,sha256=4BQT3A9t-nDIyCpILgRZF7ZOgK1oabp-gJl5nyWvKWc,4418
|
|
26
|
+
mns_scheduler/concept/ths/detaill/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
27
|
+
mns_scheduler/concept/ths/detaill/ths_concept_detail_api.py,sha256=qPJllFhy9BSM4LOCAbQ5MLhpOvP3oNxlwzhgvHFKsn4,10784
|
|
38
28
|
mns_scheduler/concept/ths/sync_new_index/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
39
|
-
mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_new_index_api.py,sha256=
|
|
29
|
+
mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_new_index_api.py,sha256=vNe9Wt0yTiPLj0svA-2H4Pd94P9yr1kNM0EJmaw85uE,7621
|
|
40
30
|
mns_scheduler/concept/ths/update_concept_info/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
41
|
-
mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py,sha256=
|
|
42
|
-
mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py,sha256=
|
|
31
|
+
mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py,sha256=wwuLfjj9AnFcHP-oQPC5AhpwgZ8IsPiNUh-Z6swcngA,1380
|
|
32
|
+
mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py,sha256=nwDsH3wD_EXf4HHtwEsj0HFezGdIe0MPB-r6l8WOjY8,9305
|
|
43
33
|
mns_scheduler/db/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
44
34
|
mns_scheduler/db/col_move_service.py,sha256=-d3JUCjWyaGKBhyUSkqwpCgZtHkIy1JOasgpxmH74zg,4057
|
|
45
35
|
mns_scheduler/db/db_status.py,sha256=e5eW5ZSm5J7tHvmxxhFmFdbZb2_oB_SAcdcFqc4KDmw,733
|
|
@@ -102,7 +92,7 @@ mns_scheduler/risk/financial/stock_equity_mortgage_check_api.py,sha256=SQ7dieSCO
|
|
|
102
92
|
mns_scheduler/risk/major_violations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
103
93
|
mns_scheduler/risk/major_violations/register_and_investigate_stock_sync_api.py,sha256=_xPQxT6OS7J7_PtA7hbfCmMS7VzpZTWoZUOXzwoesUs,5672
|
|
104
94
|
mns_scheduler/risk/self/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
105
|
-
mns_scheduler/risk/self/wei_pan_stock_api.py,sha256=
|
|
95
|
+
mns_scheduler/risk/self/wei_pan_stock_api.py,sha256=5ebrjFqK49j_yEMffFBCumMeBzq_rmtsA4--lL5mhZs,1899
|
|
106
96
|
mns_scheduler/risk/test/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
|
|
107
97
|
mns_scheduler/risk/test/fix_blask_list.py,sha256=jjLhhIWH1L4CgNp2jQ_HAHbC3wVgeX1TzhqC--_D2MI,1249
|
|
108
98
|
mns_scheduler/risk/transactions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -137,8 +127,8 @@ mns_scheduler/zt/zt_pool/__init__.py,sha256=Tyvi_iQlv3jz59EdH67Mycnt9CSixcWPQoJw
|
|
|
137
127
|
mns_scheduler/zt/zt_pool/em_zt_pool_sync_api.py,sha256=x3-NCugHoY5IuX2s1UOUMl8DZsi9nrtMbEGzxWqJj3c,7642
|
|
138
128
|
mns_scheduler/zt/zt_pool/ths_zt_pool_sync_api.py,sha256=LJVGqJyLn04oC-Xp59RVE1IOz7lx6ao78bw9l67sKBM,10382
|
|
139
129
|
mns_scheduler/zz_task/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
140
|
-
mns_scheduler/zz_task/data_sync_task.py,sha256=
|
|
141
|
-
mns_scheduler-1.1.
|
|
142
|
-
mns_scheduler-1.1.
|
|
143
|
-
mns_scheduler-1.1.
|
|
144
|
-
mns_scheduler-1.1.
|
|
130
|
+
mns_scheduler/zz_task/data_sync_task.py,sha256=KI7I5R4RFZ67KSzXJiObnIrsKecvvvMQpCFNMX1qHJQ,19069
|
|
131
|
+
mns_scheduler-1.1.4.0.dist-info/METADATA,sha256=yPwQkWkKLxLHIzzyZIWpcotteXG5QNZAF-7y25ISL3k,64
|
|
132
|
+
mns_scheduler-1.1.4.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
133
|
+
mns_scheduler-1.1.4.0.dist-info/top_level.txt,sha256=PXQDFBGR1pWmsUbH5yiLAh71P5HZODTRED0zJ8CCgOc,14
|
|
134
|
+
mns_scheduler-1.1.4.0.dist-info/RECORD,,
|