re-common 10.0.37__py3-none-any.whl → 10.0.39__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.
- re_common/baselibrary/__init__.py +4 -4
- re_common/baselibrary/baseabs/__init__.py +6 -6
- re_common/baselibrary/baseabs/baseabs.py +26 -26
- re_common/baselibrary/database/mbuilder.py +132 -132
- re_common/baselibrary/database/moudle.py +93 -93
- re_common/baselibrary/database/msqlite3.py +194 -194
- re_common/baselibrary/database/mysql.py +169 -169
- re_common/baselibrary/database/sql_factory.py +26 -26
- re_common/baselibrary/mthread/MThreadingRun.py +486 -486
- re_common/baselibrary/mthread/MThreadingRunEvent.py +349 -349
- re_common/baselibrary/mthread/__init__.py +2 -2
- re_common/baselibrary/mthread/mythreading.py +695 -695
- re_common/baselibrary/pakge_other/socks.py +404 -404
- re_common/baselibrary/readconfig/config_factory.py +18 -18
- re_common/baselibrary/readconfig/ini_config.py +317 -317
- re_common/baselibrary/readconfig/toml_config.py +49 -49
- re_common/baselibrary/temporary/envdata.py +36 -36
- re_common/baselibrary/tools/all_requests/aiohttp_request.py +118 -118
- re_common/baselibrary/tools/all_requests/httpx_requet.py +102 -102
- re_common/baselibrary/tools/all_requests/mrequest.py +412 -412
- re_common/baselibrary/tools/all_requests/requests_request.py +81 -81
- re_common/baselibrary/tools/batch_compre/bijiao_batch.py +31 -31
- re_common/baselibrary/tools/contrast_db3.py +123 -123
- re_common/baselibrary/tools/copy_file.py +39 -39
- re_common/baselibrary/tools/db3_2_sizedb3.py +102 -102
- re_common/baselibrary/tools/foreachgz.py +39 -39
- re_common/baselibrary/tools/get_attr.py +10 -10
- re_common/baselibrary/tools/image_to_pdf.py +61 -61
- re_common/baselibrary/tools/java_code_deal.py +139 -139
- re_common/baselibrary/tools/javacode.py +79 -79
- re_common/baselibrary/tools/mdb_db3.py +48 -48
- re_common/baselibrary/tools/merge_file.py +171 -171
- re_common/baselibrary/tools/merge_gz_file.py +165 -165
- re_common/baselibrary/tools/mhdfstools/down_hdfs_files.py +42 -42
- re_common/baselibrary/tools/mhdfstools/hdfst.py +42 -42
- re_common/baselibrary/tools/mhdfstools/up_hdfs_files.py +38 -38
- re_common/baselibrary/tools/mongo_tools.py +50 -50
- re_common/baselibrary/tools/move_file.py +170 -170
- re_common/baselibrary/tools/move_mongo/mongo_table_to_file.py +63 -63
- re_common/baselibrary/tools/move_mongo/move_mongo_table.py +354 -354
- re_common/baselibrary/tools/move_mongo/use_mttf.py +18 -18
- re_common/baselibrary/tools/move_mongo/use_mv.py +93 -93
- re_common/baselibrary/tools/mpandas/mpandasreadexcel.py +125 -125
- re_common/baselibrary/tools/mpandas/pandas_visualization.py +7 -7
- re_common/baselibrary/tools/myparsel.py +104 -104
- re_common/baselibrary/tools/rename_dir_file.py +37 -37
- re_common/baselibrary/tools/sequoiadb_utils.py +398 -398
- re_common/baselibrary/tools/split_line_to_many.py +25 -25
- re_common/baselibrary/tools/stringtodicts.py +33 -33
- re_common/baselibrary/tools/workwechant_bot.py +84 -84
- re_common/baselibrary/utils/baseaiohttp.py +296 -296
- re_common/baselibrary/utils/baseaiomysql.py +87 -87
- re_common/baselibrary/utils/baseallstep.py +191 -191
- re_common/baselibrary/utils/baseavro.py +19 -19
- re_common/baselibrary/utils/baseboto3.py +291 -291
- re_common/baselibrary/utils/basecsv.py +32 -32
- re_common/baselibrary/utils/basedict.py +133 -133
- re_common/baselibrary/utils/basedir.py +241 -241
- re_common/baselibrary/utils/baseencode.py +351 -351
- re_common/baselibrary/utils/baseencoding.py +28 -28
- re_common/baselibrary/utils/baseesdsl.py +86 -86
- re_common/baselibrary/utils/baseexcel.py +264 -264
- re_common/baselibrary/utils/baseexcept.py +109 -109
- re_common/baselibrary/utils/basefile.py +654 -654
- re_common/baselibrary/utils/baseftp.py +214 -214
- re_common/baselibrary/utils/basegzip.py +60 -60
- re_common/baselibrary/utils/basehdfs.py +135 -135
- re_common/baselibrary/utils/basehttpx.py +268 -268
- re_common/baselibrary/utils/baseip.py +87 -87
- re_common/baselibrary/utils/basejson.py +2 -2
- re_common/baselibrary/utils/baselist.py +32 -32
- re_common/baselibrary/utils/basemotor.py +190 -190
- re_common/baselibrary/utils/basemssql.py +98 -98
- re_common/baselibrary/utils/baseodbc.py +113 -113
- re_common/baselibrary/utils/basepandas.py +302 -302
- re_common/baselibrary/utils/basepeewee.py +11 -11
- re_common/baselibrary/utils/basepika.py +180 -180
- re_common/baselibrary/utils/basepydash.py +143 -143
- re_common/baselibrary/utils/basepymongo.py +230 -230
- re_common/baselibrary/utils/basequeue.py +22 -22
- re_common/baselibrary/utils/baserar.py +57 -57
- re_common/baselibrary/utils/baserequest.py +279 -279
- re_common/baselibrary/utils/baseset.py +8 -8
- re_common/baselibrary/utils/basesmb.py +403 -403
- re_common/baselibrary/utils/basestring.py +382 -382
- re_common/baselibrary/utils/basetime.py +320 -320
- re_common/baselibrary/utils/baseurl.py +121 -121
- re_common/baselibrary/utils/basezip.py +57 -57
- re_common/baselibrary/utils/core/__init__.py +7 -7
- re_common/baselibrary/utils/core/bottomutils.py +18 -18
- re_common/baselibrary/utils/core/mdeprecated.py +327 -327
- re_common/baselibrary/utils/core/mlamada.py +16 -16
- re_common/baselibrary/utils/core/msginfo.py +25 -25
- re_common/baselibrary/utils/core/requests_core.py +103 -103
- re_common/baselibrary/utils/fateadm.py +429 -429
- re_common/baselibrary/utils/importfun.py +123 -123
- re_common/baselibrary/utils/mfaker.py +57 -57
- re_common/baselibrary/utils/my_abc/__init__.py +3 -3
- re_common/baselibrary/utils/my_abc/better_abc.py +32 -32
- re_common/baselibrary/utils/mylogger.py +414 -414
- re_common/baselibrary/utils/myredisclient.py +861 -861
- re_common/baselibrary/utils/pipupgrade.py +21 -21
- re_common/baselibrary/utils/ringlist.py +85 -85
- re_common/baselibrary/utils/version_compare.py +36 -36
- re_common/baselibrary/utils/ydmhttp.py +126 -126
- re_common/facade/lazy_import.py +11 -11
- re_common/facade/loggerfacade.py +25 -25
- re_common/facade/mysqlfacade.py +467 -467
- re_common/facade/now.py +31 -31
- re_common/facade/sqlite3facade.py +257 -257
- re_common/facade/use/mq_use_facade.py +83 -83
- re_common/facade/use/proxy_use_facade.py +19 -19
- re_common/libtest/base_dict_test.py +19 -19
- re_common/libtest/baseavro_test.py +13 -13
- re_common/libtest/basefile_test.py +14 -14
- re_common/libtest/basemssql_test.py +77 -77
- re_common/libtest/baseodbc_test.py +7 -7
- re_common/libtest/basepandas_test.py +38 -38
- re_common/libtest/get_attr_test/get_attr_test_settings.py +14 -14
- re_common/libtest/get_attr_test/settings.py +54 -54
- re_common/libtest/idencode_test.py +53 -53
- re_common/libtest/iniconfig_test.py +35 -35
- re_common/libtest/ip_test.py +34 -34
- re_common/libtest/merge_file_test.py +20 -20
- re_common/libtest/mfaker_test.py +8 -8
- re_common/libtest/mm3_test.py +31 -31
- re_common/libtest/mylogger_test.py +88 -88
- re_common/libtest/myparsel_test.py +27 -27
- re_common/libtest/mysql_test.py +151 -151
- re_common/libtest/pymongo_test.py +21 -21
- re_common/libtest/split_test.py +11 -11
- re_common/libtest/sqlite3_merge_test.py +5 -5
- re_common/libtest/sqlite3_test.py +34 -34
- re_common/libtest/tomlconfig_test.py +30 -30
- re_common/libtest/use_tools_test/__init__.py +2 -2
- re_common/libtest/user/__init__.py +4 -4
- re_common/studio/__init__.py +4 -4
- re_common/studio/assignment_expressions.py +36 -36
- re_common/studio/mydash/test1.py +18 -18
- re_common/studio/pydashstudio/first.py +9 -9
- re_common/studio/streamlitstudio/first_app.py +65 -65
- re_common/studio/streamlitstudio/uber_pickups.py +23 -23
- re_common/studio/test.py +18 -18
- re_common/v2/baselibrary/business_utils/BusinessStringUtil.py +219 -219
- re_common/v2/baselibrary/business_utils/baseencodeid.py +100 -100
- re_common/v2/baselibrary/business_utils/full_doi_path.py +116 -116
- re_common/v2/baselibrary/business_utils/rel_tools.py +6 -6
- re_common/v2/baselibrary/decorators/utils.py +59 -59
- re_common/v2/baselibrary/helpers/search_packge/NearestNeighbors_test.py +105 -105
- re_common/v2/baselibrary/helpers/search_packge/fit_text_match.py +253 -253
- re_common/v2/baselibrary/helpers/search_packge/scikit_learn_text_matcher.py +260 -260
- re_common/v2/baselibrary/helpers/search_packge/test.py +1 -1
- re_common/v2/baselibrary/s3object/baseboto3.py +230 -230
- re_common/v2/baselibrary/tools/WeChatRobot.py +95 -95
- re_common/v2/baselibrary/tools/ac_ahocorasick.py +75 -75
- re_common/v2/baselibrary/tools/concurrency.py +35 -35
- re_common/v2/baselibrary/tools/data_processer/base.py +53 -53
- re_common/v2/baselibrary/tools/data_processer/data_processer.py +508 -508
- re_common/v2/baselibrary/tools/data_processer/data_reader.py +187 -187
- re_common/v2/baselibrary/tools/data_processer/data_writer.py +38 -38
- re_common/v2/baselibrary/tools/dict_tools.py +44 -44
- re_common/v2/baselibrary/tools/dolphinscheduler.py +187 -187
- re_common/v2/baselibrary/tools/hdfs_base_processor.py +204 -204
- re_common/v2/baselibrary/tools/hdfs_bulk_processor.py +67 -67
- re_common/v2/baselibrary/tools/hdfs_data_processer.py +338 -338
- re_common/v2/baselibrary/tools/hdfs_line_processor.py +74 -74
- re_common/v2/baselibrary/tools/list_tools.py +69 -69
- re_common/v2/baselibrary/tools/resume_tracker.py +94 -94
- re_common/v2/baselibrary/tools/search_hash_tools.py +54 -54
- re_common/v2/baselibrary/tools/text_matcher.py +326 -326
- re_common/v2/baselibrary/tools/unionfind_tools.py +60 -60
- re_common/v2/baselibrary/utils/BusinessStringUtil.py +196 -196
- re_common/v2/baselibrary/utils/api_net_utils.py +270 -270
- re_common/v2/baselibrary/utils/author_smi.py +361 -361
- re_common/v2/baselibrary/utils/base_string_similarity.py +158 -158
- re_common/v2/baselibrary/utils/basedict.py +37 -37
- re_common/v2/baselibrary/utils/basehdfs.py +163 -163
- re_common/v2/baselibrary/utils/basepika.py +180 -180
- re_common/v2/baselibrary/utils/basetime.py +77 -77
- re_common/v2/baselibrary/utils/db.py +156 -156
- re_common/v2/baselibrary/utils/json_cls.py +16 -16
- re_common/v2/baselibrary/utils/mq.py +83 -83
- re_common/v2/baselibrary/utils/n_ary_expression_tree.py +243 -243
- re_common/v2/baselibrary/utils/string_bool.py +186 -186
- re_common/v2/baselibrary/utils/string_clear.py +246 -246
- re_common/v2/baselibrary/utils/string_smi.py +18 -18
- re_common/v2/baselibrary/utils/stringutils.py +271 -278
- re_common/vip/base_step_process.py +11 -11
- re_common/vip/baseencodeid.py +90 -90
- re_common/vip/changetaskname.py +28 -28
- re_common/vip/core_var.py +24 -24
- re_common/vip/mmh3Hash.py +89 -89
- re_common/vip/proxy/allproxys.py +127 -127
- re_common/vip/proxy/allproxys_thread.py +159 -159
- re_common/vip/proxy/cnki_proxy.py +153 -153
- re_common/vip/proxy/kuaidaili.py +87 -87
- re_common/vip/proxy/proxy_all.py +113 -113
- re_common/vip/proxy/update_kuaidaili_0.py +42 -42
- re_common/vip/proxy/wanfang_proxy.py +152 -152
- re_common/vip/proxy/wp_proxy_all.py +181 -181
- re_common/vip/read_rawid_to_txt.py +91 -91
- re_common/vip/title/__init__.py +5 -5
- re_common/vip/title/transform/TransformBookTitleToZt.py +125 -125
- re_common/vip/title/transform/TransformConferenceTitleToZt.py +139 -139
- re_common/vip/title/transform/TransformCstadTitleToZt.py +195 -195
- re_common/vip/title/transform/TransformJournalTitleToZt.py +203 -203
- re_common/vip/title/transform/TransformPatentTitleToZt.py +132 -132
- re_common/vip/title/transform/TransformRegulationTitleToZt.py +114 -114
- re_common/vip/title/transform/TransformStandardTitleToZt.py +135 -135
- re_common/vip/title/transform/TransformThesisTitleToZt.py +135 -135
- re_common/vip/title/transform/__init__.py +10 -10
- {re_common-10.0.37.dist-info → re_common-10.0.39.dist-info}/LICENSE +201 -201
- {re_common-10.0.37.dist-info → re_common-10.0.39.dist-info}/METADATA +16 -16
- re_common-10.0.39.dist-info/RECORD +248 -0
- {re_common-10.0.37.dist-info → re_common-10.0.39.dist-info}/WHEEL +1 -1
- re_common-10.0.37.dist-info/RECORD +0 -248
- {re_common-10.0.37.dist-info → re_common-10.0.39.dist-info}/top_level.txt +0 -0
|
@@ -1,187 +1,187 @@
|
|
|
1
|
-
import requests
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
# 注意;basic_json是一个字典,存储一些平台基本信息,样例如下:
|
|
5
|
-
# {"user_name":"fuyu", # 用户名
|
|
6
|
-
# "token":"cce8747e20881dfasdf66b0511cdc9fb2", # 个人令牌
|
|
7
|
-
# "project_name":"project_name", # 项目名称
|
|
8
|
-
# "task_name":"project_name" # 任务名称
|
|
9
|
-
#}
|
|
10
|
-
|
|
11
|
-
# 用于获取项目代码和任务代码
|
|
12
|
-
def get_dolphin_scheduler_code(basic_json):
|
|
13
|
-
# 设置请求头,包含认证token
|
|
14
|
-
headers = {
|
|
15
|
-
"token": basic_json['token']
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
# 发送GET请求,获取项目列表
|
|
19
|
-
response = requests.get(url='http://192.168.98.21:12345/cqvip/projects/list',
|
|
20
|
-
headers=headers)
|
|
21
|
-
|
|
22
|
-
# 解析响应中的JSON数据,获取项目列表
|
|
23
|
-
project_list = response.json()['data']
|
|
24
|
-
|
|
25
|
-
# 遍历项目列表,查找与指定项目名称匹配的项目
|
|
26
|
-
projectCode=-1
|
|
27
|
-
for i in project_list:
|
|
28
|
-
if i['name'] == basic_json['project_name']:
|
|
29
|
-
projectCode = i['code'] # 获取匹配项目的代码
|
|
30
|
-
break
|
|
31
|
-
|
|
32
|
-
# 检查是否找到了匹配的项目代码
|
|
33
|
-
if projectCode!=-1:
|
|
34
|
-
# 发送GET请求,获取指定项目下的任务定义列表
|
|
35
|
-
response = requests.get(
|
|
36
|
-
url='http://192.168.98.21:12345/cqvip/projects/' + str(projectCode) + '/process-definition/list',
|
|
37
|
-
headers=headers)
|
|
38
|
-
|
|
39
|
-
# 解析响应中的JSON数据,获取任务定义列表
|
|
40
|
-
task_list = response.json()['data']
|
|
41
|
-
|
|
42
|
-
# 遍历任务定义列表,查找与指定任务名称匹配的任务
|
|
43
|
-
task_code=-1
|
|
44
|
-
for task in task_list:
|
|
45
|
-
if task['processDefinition']['name'] == basic_json['task_name']:
|
|
46
|
-
task_code = task['processDefinition']['code'] # 获取匹配任务的代码
|
|
47
|
-
break
|
|
48
|
-
if task_code==-1:
|
|
49
|
-
raise Exception('未找到', basic_json['task_name'], '任务')
|
|
50
|
-
else:
|
|
51
|
-
raise Exception('未找到',basic_json['project_name'],'项目')
|
|
52
|
-
return (str(projectCode),str(task_code))
|
|
53
|
-
|
|
54
|
-
# 定义一个函数dolphinscheduler_run,用于在DolphinScheduler中运行指定的任务
|
|
55
|
-
def dolphinscheduler_run(basic_json):
|
|
56
|
-
# 设置请求头,包含认证token
|
|
57
|
-
headers = {
|
|
58
|
-
"token": basic_json['token']
|
|
59
|
-
}
|
|
60
|
-
code=get_dolphin_scheduler_code(basic_json)
|
|
61
|
-
# 准备请求数据,用于启动任务实例
|
|
62
|
-
data = {
|
|
63
|
-
"projectCode": code[0], # 项目代码
|
|
64
|
-
"processDefinitionCode": code[1], # 任务定义代码
|
|
65
|
-
"tenantCode": basic_json['user_name'], # 用户名称
|
|
66
|
-
"scheduleTime": "", # 调度时间(留空表示立即执行)
|
|
67
|
-
"failureStrategy": "END", # 失败策略(END表示失败后结束)
|
|
68
|
-
"warningType": "NONE", # 警告类型(NONE表示不发送警告)
|
|
69
|
-
"processInstancePriority": "MEDIUM", # 任务实例优先级(MEDIUM表示中等)
|
|
70
|
-
}
|
|
71
|
-
# 发送POST请求,启动任务实例
|
|
72
|
-
r = requests.post(url='http://192.168.98.21:12345/cqvip/projects/' + str(
|
|
73
|
-
code[0]) + '/executors/start-process-instance',
|
|
74
|
-
headers=headers, params=data)
|
|
75
|
-
|
|
76
|
-
# 打印响应内容,通常包含任务启动的结果信息
|
|
77
|
-
print(r.text)
|
|
78
|
-
|
|
79
|
-
## 修改 DolphinScheduler 平台上任务的上下线状态
|
|
80
|
-
def alter_dolphinscheduler_state(basic_json, releaseState):
|
|
81
|
-
"""
|
|
82
|
-
参数:
|
|
83
|
-
- basic_json (dict): 包含用户认证信息的字典,必须包含 'token'、'user_name','project_name'和'spark_test' 字段。
|
|
84
|
-
- releaseState (str): 任务的目标状态,'ONLINE' 表示上线,'OFFLINE' 表示下线。
|
|
85
|
-
"""
|
|
86
|
-
|
|
87
|
-
# 设置请求头,包含认证 token
|
|
88
|
-
headers = {
|
|
89
|
-
"token": basic_json['token']
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
# 获取任务代码,假设 get_dolphin_scheduler_code 是一个函数,返回项目代码和任务代码
|
|
93
|
-
code = get_dolphin_scheduler_code(basic_json) # code[0] 是项目代码,code[1] 是任务代码
|
|
94
|
-
|
|
95
|
-
# 构建 API URL,用于修改任务的上下线状态
|
|
96
|
-
API_URL = "http://192.168.98.21:12345/cqvip/projects/" + code[0] + "/process-definition/" + code[1] + "/release"
|
|
97
|
-
|
|
98
|
-
# 准备请求数据,包含任务的目标状态
|
|
99
|
-
data = {
|
|
100
|
-
"releaseState": releaseState # 'OFFLINE' 表示下线状态,'ONLINE' 表示上线状态
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
# 发送 POST 请求,修改任务的上下线状态
|
|
104
|
-
# - url: API 地址
|
|
105
|
-
# - headers: 请求头,包含认证信息
|
|
106
|
-
# - params: 请求参数,包含任务的目标状态
|
|
107
|
-
r = requests.post(url=API_URL, headers=headers, params=data)
|
|
108
|
-
|
|
109
|
-
# 打印 API 响应内容,通常包含修改状态的结果信息
|
|
110
|
-
print(r.text)
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
# 修改 DolphinScheduler 平台上的文件内容
|
|
114
|
-
def alter_dolphinscheduler_file(basic_json, local_file_path, dolphin_scheduler_file_path):
|
|
115
|
-
"""
|
|
116
|
-
参数:
|
|
117
|
-
- basic_json (dict): 包含用户认证信息的字典,必须包含 'token' 和 'user_name' 字段。
|
|
118
|
-
- local_file_path (str): 本地文件的路径,用于读取更新后的内容。
|
|
119
|
-
- dolphin_scheduler_file_path (str): 需要修改的文件在 DolphinScheduler 中的路径(相对路径)。
|
|
120
|
-
"""
|
|
121
|
-
|
|
122
|
-
# DolphinScheduler 的 API 地址,用于更新文件内容
|
|
123
|
-
URL = "http://192.168.98.21:12345/cqvip/resources/update-content"
|
|
124
|
-
|
|
125
|
-
# 打开本地文件,读取文件内容
|
|
126
|
-
with open(local_file_path, 'r', encoding='utf-8') as f:
|
|
127
|
-
content_text = f.read() # 读取文件的全部内容
|
|
128
|
-
|
|
129
|
-
# 设置请求头,包含认证 token
|
|
130
|
-
headers = {
|
|
131
|
-
"token": basic_json['token']
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
# 准备请求数据,包含文件内容、用户信息和文件路径
|
|
135
|
-
data = {
|
|
136
|
-
"content": content_text, # 更新后的文件内容
|
|
137
|
-
"tenantCode": basic_json['user_name'], # 用户名称
|
|
138
|
-
"fullName": "dolphinscheduler/" + basic_json['user_name'] + "/resources" + dolphin_scheduler_file_path
|
|
139
|
-
# 文件在 DolphinScheduler 中的完整路径
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
# 发送 PUT 请求,更新 DolphinScheduler 中的文件内容
|
|
143
|
-
# - url: API 地址
|
|
144
|
-
# - headers: 请求头,包含认证信息
|
|
145
|
-
# - data: 请求数据,包含文件内容和路径信息
|
|
146
|
-
r = requests.put(url=URL, headers=headers, data=data)
|
|
147
|
-
|
|
148
|
-
# 打印 API 响应内容,通常包含更新结果信息
|
|
149
|
-
print(r.text)
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
# 将本地文件上传到 DolphinScheduler 的资源目录中
|
|
153
|
-
def upload_dolphinscheduler_file(basic_json, local_file_path, file_name, dolphin_scheduler_file_path):
|
|
154
|
-
"""
|
|
155
|
-
参数:
|
|
156
|
-
- basic_json (dict): 包含用户认证信息的字典,必须包含 'token' 和 'user_name' 字段。
|
|
157
|
-
- local_file_path (str): 本地文件的路径。
|
|
158
|
-
- file_name (str): 上传到 DolphinScheduler 后的文件名。
|
|
159
|
-
- dolphin_scheduler_file_path (str): 文件在 DolphinScheduler 中的目标路径(相对路径)。
|
|
160
|
-
"""
|
|
161
|
-
|
|
162
|
-
# DolphinScheduler 的 API 地址
|
|
163
|
-
API_URL = "http://192.168.98.21:12345/cqvip/resources"
|
|
164
|
-
|
|
165
|
-
# 设置请求头,包含认证 token
|
|
166
|
-
headers = {
|
|
167
|
-
"token": basic_json['token'],
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
# 准备请求数据,包含文件类型、文件名、描述和目标路径
|
|
171
|
-
data = {
|
|
172
|
-
"type": "FILE", # 文件类型
|
|
173
|
-
"name": file_name, # 上传后的文件名
|
|
174
|
-
"description": "undefined", # 文件描述(此处为默认值)
|
|
175
|
-
"currentDir": "dolphinscheduler/" + basic_json['user_name'] + "/resources" + dolphin_scheduler_file_path # 目标路径
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
# 发送 POST 请求,上传文件
|
|
179
|
-
# - url: API 地址
|
|
180
|
-
# - headers: 请求头,包含认证信息
|
|
181
|
-
# - files: 上传的文件内容,以二进制形式读取本地文件
|
|
182
|
-
# - params: 其他请求参数,包含文件信息和目标路径
|
|
183
|
-
r = requests.post(url=API_URL, headers=headers, files={'file': open(local_file_path, 'rb')}, params=data)
|
|
184
|
-
|
|
185
|
-
# 打印 API 响应内容,通常包含上传结果信息
|
|
186
|
-
print(r.text)
|
|
187
|
-
|
|
1
|
+
import requests
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
# 注意;basic_json是一个字典,存储一些平台基本信息,样例如下:
|
|
5
|
+
# {"user_name":"fuyu", # 用户名
|
|
6
|
+
# "token":"cce8747e20881dfasdf66b0511cdc9fb2", # 个人令牌
|
|
7
|
+
# "project_name":"project_name", # 项目名称
|
|
8
|
+
# "task_name":"project_name" # 任务名称
|
|
9
|
+
#}
|
|
10
|
+
|
|
11
|
+
# 用于获取项目代码和任务代码
|
|
12
|
+
def get_dolphin_scheduler_code(basic_json):
|
|
13
|
+
# 设置请求头,包含认证token
|
|
14
|
+
headers = {
|
|
15
|
+
"token": basic_json['token']
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
# 发送GET请求,获取项目列表
|
|
19
|
+
response = requests.get(url='http://192.168.98.21:12345/cqvip/projects/list',
|
|
20
|
+
headers=headers)
|
|
21
|
+
|
|
22
|
+
# 解析响应中的JSON数据,获取项目列表
|
|
23
|
+
project_list = response.json()['data']
|
|
24
|
+
|
|
25
|
+
# 遍历项目列表,查找与指定项目名称匹配的项目
|
|
26
|
+
projectCode=-1
|
|
27
|
+
for i in project_list:
|
|
28
|
+
if i['name'] == basic_json['project_name']:
|
|
29
|
+
projectCode = i['code'] # 获取匹配项目的代码
|
|
30
|
+
break
|
|
31
|
+
|
|
32
|
+
# 检查是否找到了匹配的项目代码
|
|
33
|
+
if projectCode!=-1:
|
|
34
|
+
# 发送GET请求,获取指定项目下的任务定义列表
|
|
35
|
+
response = requests.get(
|
|
36
|
+
url='http://192.168.98.21:12345/cqvip/projects/' + str(projectCode) + '/process-definition/list',
|
|
37
|
+
headers=headers)
|
|
38
|
+
|
|
39
|
+
# 解析响应中的JSON数据,获取任务定义列表
|
|
40
|
+
task_list = response.json()['data']
|
|
41
|
+
|
|
42
|
+
# 遍历任务定义列表,查找与指定任务名称匹配的任务
|
|
43
|
+
task_code=-1
|
|
44
|
+
for task in task_list:
|
|
45
|
+
if task['processDefinition']['name'] == basic_json['task_name']:
|
|
46
|
+
task_code = task['processDefinition']['code'] # 获取匹配任务的代码
|
|
47
|
+
break
|
|
48
|
+
if task_code==-1:
|
|
49
|
+
raise Exception('未找到', basic_json['task_name'], '任务')
|
|
50
|
+
else:
|
|
51
|
+
raise Exception('未找到',basic_json['project_name'],'项目')
|
|
52
|
+
return (str(projectCode),str(task_code))
|
|
53
|
+
|
|
54
|
+
# 定义一个函数dolphinscheduler_run,用于在DolphinScheduler中运行指定的任务
|
|
55
|
+
def dolphinscheduler_run(basic_json):
|
|
56
|
+
# 设置请求头,包含认证token
|
|
57
|
+
headers = {
|
|
58
|
+
"token": basic_json['token']
|
|
59
|
+
}
|
|
60
|
+
code=get_dolphin_scheduler_code(basic_json)
|
|
61
|
+
# 准备请求数据,用于启动任务实例
|
|
62
|
+
data = {
|
|
63
|
+
"projectCode": code[0], # 项目代码
|
|
64
|
+
"processDefinitionCode": code[1], # 任务定义代码
|
|
65
|
+
"tenantCode": basic_json['user_name'], # 用户名称
|
|
66
|
+
"scheduleTime": "", # 调度时间(留空表示立即执行)
|
|
67
|
+
"failureStrategy": "END", # 失败策略(END表示失败后结束)
|
|
68
|
+
"warningType": "NONE", # 警告类型(NONE表示不发送警告)
|
|
69
|
+
"processInstancePriority": "MEDIUM", # 任务实例优先级(MEDIUM表示中等)
|
|
70
|
+
}
|
|
71
|
+
# 发送POST请求,启动任务实例
|
|
72
|
+
r = requests.post(url='http://192.168.98.21:12345/cqvip/projects/' + str(
|
|
73
|
+
code[0]) + '/executors/start-process-instance',
|
|
74
|
+
headers=headers, params=data)
|
|
75
|
+
|
|
76
|
+
# 打印响应内容,通常包含任务启动的结果信息
|
|
77
|
+
print(r.text)
|
|
78
|
+
|
|
79
|
+
## 修改 DolphinScheduler 平台上任务的上下线状态
|
|
80
|
+
def alter_dolphinscheduler_state(basic_json, releaseState):
|
|
81
|
+
"""
|
|
82
|
+
参数:
|
|
83
|
+
- basic_json (dict): 包含用户认证信息的字典,必须包含 'token'、'user_name','project_name'和'spark_test' 字段。
|
|
84
|
+
- releaseState (str): 任务的目标状态,'ONLINE' 表示上线,'OFFLINE' 表示下线。
|
|
85
|
+
"""
|
|
86
|
+
|
|
87
|
+
# 设置请求头,包含认证 token
|
|
88
|
+
headers = {
|
|
89
|
+
"token": basic_json['token']
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
# 获取任务代码,假设 get_dolphin_scheduler_code 是一个函数,返回项目代码和任务代码
|
|
93
|
+
code = get_dolphin_scheduler_code(basic_json) # code[0] 是项目代码,code[1] 是任务代码
|
|
94
|
+
|
|
95
|
+
# 构建 API URL,用于修改任务的上下线状态
|
|
96
|
+
API_URL = "http://192.168.98.21:12345/cqvip/projects/" + code[0] + "/process-definition/" + code[1] + "/release"
|
|
97
|
+
|
|
98
|
+
# 准备请求数据,包含任务的目标状态
|
|
99
|
+
data = {
|
|
100
|
+
"releaseState": releaseState # 'OFFLINE' 表示下线状态,'ONLINE' 表示上线状态
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
# 发送 POST 请求,修改任务的上下线状态
|
|
104
|
+
# - url: API 地址
|
|
105
|
+
# - headers: 请求头,包含认证信息
|
|
106
|
+
# - params: 请求参数,包含任务的目标状态
|
|
107
|
+
r = requests.post(url=API_URL, headers=headers, params=data)
|
|
108
|
+
|
|
109
|
+
# 打印 API 响应内容,通常包含修改状态的结果信息
|
|
110
|
+
print(r.text)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
# 修改 DolphinScheduler 平台上的文件内容
|
|
114
|
+
def alter_dolphinscheduler_file(basic_json, local_file_path, dolphin_scheduler_file_path):
|
|
115
|
+
"""
|
|
116
|
+
参数:
|
|
117
|
+
- basic_json (dict): 包含用户认证信息的字典,必须包含 'token' 和 'user_name' 字段。
|
|
118
|
+
- local_file_path (str): 本地文件的路径,用于读取更新后的内容。
|
|
119
|
+
- dolphin_scheduler_file_path (str): 需要修改的文件在 DolphinScheduler 中的路径(相对路径)。
|
|
120
|
+
"""
|
|
121
|
+
|
|
122
|
+
# DolphinScheduler 的 API 地址,用于更新文件内容
|
|
123
|
+
URL = "http://192.168.98.21:12345/cqvip/resources/update-content"
|
|
124
|
+
|
|
125
|
+
# 打开本地文件,读取文件内容
|
|
126
|
+
with open(local_file_path, 'r', encoding='utf-8') as f:
|
|
127
|
+
content_text = f.read() # 读取文件的全部内容
|
|
128
|
+
|
|
129
|
+
# 设置请求头,包含认证 token
|
|
130
|
+
headers = {
|
|
131
|
+
"token": basic_json['token']
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
# 准备请求数据,包含文件内容、用户信息和文件路径
|
|
135
|
+
data = {
|
|
136
|
+
"content": content_text, # 更新后的文件内容
|
|
137
|
+
"tenantCode": basic_json['user_name'], # 用户名称
|
|
138
|
+
"fullName": "dolphinscheduler/" + basic_json['user_name'] + "/resources" + dolphin_scheduler_file_path
|
|
139
|
+
# 文件在 DolphinScheduler 中的完整路径
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
# 发送 PUT 请求,更新 DolphinScheduler 中的文件内容
|
|
143
|
+
# - url: API 地址
|
|
144
|
+
# - headers: 请求头,包含认证信息
|
|
145
|
+
# - data: 请求数据,包含文件内容和路径信息
|
|
146
|
+
r = requests.put(url=URL, headers=headers, data=data)
|
|
147
|
+
|
|
148
|
+
# 打印 API 响应内容,通常包含更新结果信息
|
|
149
|
+
print(r.text)
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
# 将本地文件上传到 DolphinScheduler 的资源目录中
|
|
153
|
+
def upload_dolphinscheduler_file(basic_json, local_file_path, file_name, dolphin_scheduler_file_path):
|
|
154
|
+
"""
|
|
155
|
+
参数:
|
|
156
|
+
- basic_json (dict): 包含用户认证信息的字典,必须包含 'token' 和 'user_name' 字段。
|
|
157
|
+
- local_file_path (str): 本地文件的路径。
|
|
158
|
+
- file_name (str): 上传到 DolphinScheduler 后的文件名。
|
|
159
|
+
- dolphin_scheduler_file_path (str): 文件在 DolphinScheduler 中的目标路径(相对路径)。
|
|
160
|
+
"""
|
|
161
|
+
|
|
162
|
+
# DolphinScheduler 的 API 地址
|
|
163
|
+
API_URL = "http://192.168.98.21:12345/cqvip/resources"
|
|
164
|
+
|
|
165
|
+
# 设置请求头,包含认证 token
|
|
166
|
+
headers = {
|
|
167
|
+
"token": basic_json['token'],
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
# 准备请求数据,包含文件类型、文件名、描述和目标路径
|
|
171
|
+
data = {
|
|
172
|
+
"type": "FILE", # 文件类型
|
|
173
|
+
"name": file_name, # 上传后的文件名
|
|
174
|
+
"description": "undefined", # 文件描述(此处为默认值)
|
|
175
|
+
"currentDir": "dolphinscheduler/" + basic_json['user_name'] + "/resources" + dolphin_scheduler_file_path # 目标路径
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
# 发送 POST 请求,上传文件
|
|
179
|
+
# - url: API 地址
|
|
180
|
+
# - headers: 请求头,包含认证信息
|
|
181
|
+
# - files: 上传的文件内容,以二进制形式读取本地文件
|
|
182
|
+
# - params: 其他请求参数,包含文件信息和目标路径
|
|
183
|
+
r = requests.post(url=API_URL, headers=headers, files={'file': open(local_file_path, 'rb')}, params=data)
|
|
184
|
+
|
|
185
|
+
# 打印 API 响应内容,通常包含上传结果信息
|
|
186
|
+
print(r.text)
|
|
187
|
+
|