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.
Files changed (217) hide show
  1. re_common/baselibrary/__init__.py +4 -4
  2. re_common/baselibrary/baseabs/__init__.py +6 -6
  3. re_common/baselibrary/baseabs/baseabs.py +26 -26
  4. re_common/baselibrary/database/mbuilder.py +132 -132
  5. re_common/baselibrary/database/moudle.py +93 -93
  6. re_common/baselibrary/database/msqlite3.py +194 -194
  7. re_common/baselibrary/database/mysql.py +169 -169
  8. re_common/baselibrary/database/sql_factory.py +26 -26
  9. re_common/baselibrary/mthread/MThreadingRun.py +486 -486
  10. re_common/baselibrary/mthread/MThreadingRunEvent.py +349 -349
  11. re_common/baselibrary/mthread/__init__.py +2 -2
  12. re_common/baselibrary/mthread/mythreading.py +695 -695
  13. re_common/baselibrary/pakge_other/socks.py +404 -404
  14. re_common/baselibrary/readconfig/config_factory.py +18 -18
  15. re_common/baselibrary/readconfig/ini_config.py +317 -317
  16. re_common/baselibrary/readconfig/toml_config.py +49 -49
  17. re_common/baselibrary/temporary/envdata.py +36 -36
  18. re_common/baselibrary/tools/all_requests/aiohttp_request.py +118 -118
  19. re_common/baselibrary/tools/all_requests/httpx_requet.py +102 -102
  20. re_common/baselibrary/tools/all_requests/mrequest.py +412 -412
  21. re_common/baselibrary/tools/all_requests/requests_request.py +81 -81
  22. re_common/baselibrary/tools/batch_compre/bijiao_batch.py +31 -31
  23. re_common/baselibrary/tools/contrast_db3.py +123 -123
  24. re_common/baselibrary/tools/copy_file.py +39 -39
  25. re_common/baselibrary/tools/db3_2_sizedb3.py +102 -102
  26. re_common/baselibrary/tools/foreachgz.py +39 -39
  27. re_common/baselibrary/tools/get_attr.py +10 -10
  28. re_common/baselibrary/tools/image_to_pdf.py +61 -61
  29. re_common/baselibrary/tools/java_code_deal.py +139 -139
  30. re_common/baselibrary/tools/javacode.py +79 -79
  31. re_common/baselibrary/tools/mdb_db3.py +48 -48
  32. re_common/baselibrary/tools/merge_file.py +171 -171
  33. re_common/baselibrary/tools/merge_gz_file.py +165 -165
  34. re_common/baselibrary/tools/mhdfstools/down_hdfs_files.py +42 -42
  35. re_common/baselibrary/tools/mhdfstools/hdfst.py +42 -42
  36. re_common/baselibrary/tools/mhdfstools/up_hdfs_files.py +38 -38
  37. re_common/baselibrary/tools/mongo_tools.py +50 -50
  38. re_common/baselibrary/tools/move_file.py +170 -170
  39. re_common/baselibrary/tools/move_mongo/mongo_table_to_file.py +63 -63
  40. re_common/baselibrary/tools/move_mongo/move_mongo_table.py +354 -354
  41. re_common/baselibrary/tools/move_mongo/use_mttf.py +18 -18
  42. re_common/baselibrary/tools/move_mongo/use_mv.py +93 -93
  43. re_common/baselibrary/tools/mpandas/mpandasreadexcel.py +125 -125
  44. re_common/baselibrary/tools/mpandas/pandas_visualization.py +7 -7
  45. re_common/baselibrary/tools/myparsel.py +104 -104
  46. re_common/baselibrary/tools/rename_dir_file.py +37 -37
  47. re_common/baselibrary/tools/sequoiadb_utils.py +398 -398
  48. re_common/baselibrary/tools/split_line_to_many.py +25 -25
  49. re_common/baselibrary/tools/stringtodicts.py +33 -33
  50. re_common/baselibrary/tools/workwechant_bot.py +84 -84
  51. re_common/baselibrary/utils/baseaiohttp.py +296 -296
  52. re_common/baselibrary/utils/baseaiomysql.py +87 -87
  53. re_common/baselibrary/utils/baseallstep.py +191 -191
  54. re_common/baselibrary/utils/baseavro.py +19 -19
  55. re_common/baselibrary/utils/baseboto3.py +291 -291
  56. re_common/baselibrary/utils/basecsv.py +32 -32
  57. re_common/baselibrary/utils/basedict.py +133 -133
  58. re_common/baselibrary/utils/basedir.py +241 -241
  59. re_common/baselibrary/utils/baseencode.py +351 -351
  60. re_common/baselibrary/utils/baseencoding.py +28 -28
  61. re_common/baselibrary/utils/baseesdsl.py +86 -86
  62. re_common/baselibrary/utils/baseexcel.py +264 -264
  63. re_common/baselibrary/utils/baseexcept.py +109 -109
  64. re_common/baselibrary/utils/basefile.py +654 -654
  65. re_common/baselibrary/utils/baseftp.py +214 -214
  66. re_common/baselibrary/utils/basegzip.py +60 -60
  67. re_common/baselibrary/utils/basehdfs.py +135 -135
  68. re_common/baselibrary/utils/basehttpx.py +268 -268
  69. re_common/baselibrary/utils/baseip.py +87 -87
  70. re_common/baselibrary/utils/basejson.py +2 -2
  71. re_common/baselibrary/utils/baselist.py +32 -32
  72. re_common/baselibrary/utils/basemotor.py +190 -190
  73. re_common/baselibrary/utils/basemssql.py +98 -98
  74. re_common/baselibrary/utils/baseodbc.py +113 -113
  75. re_common/baselibrary/utils/basepandas.py +302 -302
  76. re_common/baselibrary/utils/basepeewee.py +11 -11
  77. re_common/baselibrary/utils/basepika.py +180 -180
  78. re_common/baselibrary/utils/basepydash.py +143 -143
  79. re_common/baselibrary/utils/basepymongo.py +230 -230
  80. re_common/baselibrary/utils/basequeue.py +22 -22
  81. re_common/baselibrary/utils/baserar.py +57 -57
  82. re_common/baselibrary/utils/baserequest.py +279 -279
  83. re_common/baselibrary/utils/baseset.py +8 -8
  84. re_common/baselibrary/utils/basesmb.py +403 -403
  85. re_common/baselibrary/utils/basestring.py +382 -382
  86. re_common/baselibrary/utils/basetime.py +320 -320
  87. re_common/baselibrary/utils/baseurl.py +121 -121
  88. re_common/baselibrary/utils/basezip.py +57 -57
  89. re_common/baselibrary/utils/core/__init__.py +7 -7
  90. re_common/baselibrary/utils/core/bottomutils.py +18 -18
  91. re_common/baselibrary/utils/core/mdeprecated.py +327 -327
  92. re_common/baselibrary/utils/core/mlamada.py +16 -16
  93. re_common/baselibrary/utils/core/msginfo.py +25 -25
  94. re_common/baselibrary/utils/core/requests_core.py +103 -103
  95. re_common/baselibrary/utils/fateadm.py +429 -429
  96. re_common/baselibrary/utils/importfun.py +123 -123
  97. re_common/baselibrary/utils/mfaker.py +57 -57
  98. re_common/baselibrary/utils/my_abc/__init__.py +3 -3
  99. re_common/baselibrary/utils/my_abc/better_abc.py +32 -32
  100. re_common/baselibrary/utils/mylogger.py +414 -414
  101. re_common/baselibrary/utils/myredisclient.py +861 -861
  102. re_common/baselibrary/utils/pipupgrade.py +21 -21
  103. re_common/baselibrary/utils/ringlist.py +85 -85
  104. re_common/baselibrary/utils/version_compare.py +36 -36
  105. re_common/baselibrary/utils/ydmhttp.py +126 -126
  106. re_common/facade/lazy_import.py +11 -11
  107. re_common/facade/loggerfacade.py +25 -25
  108. re_common/facade/mysqlfacade.py +467 -467
  109. re_common/facade/now.py +31 -31
  110. re_common/facade/sqlite3facade.py +257 -257
  111. re_common/facade/use/mq_use_facade.py +83 -83
  112. re_common/facade/use/proxy_use_facade.py +19 -19
  113. re_common/libtest/base_dict_test.py +19 -19
  114. re_common/libtest/baseavro_test.py +13 -13
  115. re_common/libtest/basefile_test.py +14 -14
  116. re_common/libtest/basemssql_test.py +77 -77
  117. re_common/libtest/baseodbc_test.py +7 -7
  118. re_common/libtest/basepandas_test.py +38 -38
  119. re_common/libtest/get_attr_test/get_attr_test_settings.py +14 -14
  120. re_common/libtest/get_attr_test/settings.py +54 -54
  121. re_common/libtest/idencode_test.py +53 -53
  122. re_common/libtest/iniconfig_test.py +35 -35
  123. re_common/libtest/ip_test.py +34 -34
  124. re_common/libtest/merge_file_test.py +20 -20
  125. re_common/libtest/mfaker_test.py +8 -8
  126. re_common/libtest/mm3_test.py +31 -31
  127. re_common/libtest/mylogger_test.py +88 -88
  128. re_common/libtest/myparsel_test.py +27 -27
  129. re_common/libtest/mysql_test.py +151 -151
  130. re_common/libtest/pymongo_test.py +21 -21
  131. re_common/libtest/split_test.py +11 -11
  132. re_common/libtest/sqlite3_merge_test.py +5 -5
  133. re_common/libtest/sqlite3_test.py +34 -34
  134. re_common/libtest/tomlconfig_test.py +30 -30
  135. re_common/libtest/use_tools_test/__init__.py +2 -2
  136. re_common/libtest/user/__init__.py +4 -4
  137. re_common/studio/__init__.py +4 -4
  138. re_common/studio/assignment_expressions.py +36 -36
  139. re_common/studio/mydash/test1.py +18 -18
  140. re_common/studio/pydashstudio/first.py +9 -9
  141. re_common/studio/streamlitstudio/first_app.py +65 -65
  142. re_common/studio/streamlitstudio/uber_pickups.py +23 -23
  143. re_common/studio/test.py +18 -18
  144. re_common/v2/baselibrary/business_utils/BusinessStringUtil.py +219 -219
  145. re_common/v2/baselibrary/business_utils/baseencodeid.py +100 -100
  146. re_common/v2/baselibrary/business_utils/full_doi_path.py +116 -116
  147. re_common/v2/baselibrary/business_utils/rel_tools.py +6 -6
  148. re_common/v2/baselibrary/decorators/utils.py +59 -59
  149. re_common/v2/baselibrary/helpers/search_packge/NearestNeighbors_test.py +105 -105
  150. re_common/v2/baselibrary/helpers/search_packge/fit_text_match.py +253 -253
  151. re_common/v2/baselibrary/helpers/search_packge/scikit_learn_text_matcher.py +260 -260
  152. re_common/v2/baselibrary/helpers/search_packge/test.py +1 -1
  153. re_common/v2/baselibrary/s3object/baseboto3.py +230 -230
  154. re_common/v2/baselibrary/tools/WeChatRobot.py +95 -95
  155. re_common/v2/baselibrary/tools/ac_ahocorasick.py +75 -75
  156. re_common/v2/baselibrary/tools/concurrency.py +35 -35
  157. re_common/v2/baselibrary/tools/data_processer/base.py +53 -53
  158. re_common/v2/baselibrary/tools/data_processer/data_processer.py +508 -508
  159. re_common/v2/baselibrary/tools/data_processer/data_reader.py +187 -187
  160. re_common/v2/baselibrary/tools/data_processer/data_writer.py +38 -38
  161. re_common/v2/baselibrary/tools/dict_tools.py +44 -44
  162. re_common/v2/baselibrary/tools/dolphinscheduler.py +187 -187
  163. re_common/v2/baselibrary/tools/hdfs_base_processor.py +204 -204
  164. re_common/v2/baselibrary/tools/hdfs_bulk_processor.py +67 -67
  165. re_common/v2/baselibrary/tools/hdfs_data_processer.py +338 -338
  166. re_common/v2/baselibrary/tools/hdfs_line_processor.py +74 -74
  167. re_common/v2/baselibrary/tools/list_tools.py +69 -69
  168. re_common/v2/baselibrary/tools/resume_tracker.py +94 -94
  169. re_common/v2/baselibrary/tools/search_hash_tools.py +54 -54
  170. re_common/v2/baselibrary/tools/text_matcher.py +326 -326
  171. re_common/v2/baselibrary/tools/unionfind_tools.py +60 -60
  172. re_common/v2/baselibrary/utils/BusinessStringUtil.py +196 -196
  173. re_common/v2/baselibrary/utils/api_net_utils.py +270 -270
  174. re_common/v2/baselibrary/utils/author_smi.py +361 -361
  175. re_common/v2/baselibrary/utils/base_string_similarity.py +158 -158
  176. re_common/v2/baselibrary/utils/basedict.py +37 -37
  177. re_common/v2/baselibrary/utils/basehdfs.py +163 -163
  178. re_common/v2/baselibrary/utils/basepika.py +180 -180
  179. re_common/v2/baselibrary/utils/basetime.py +77 -77
  180. re_common/v2/baselibrary/utils/db.py +156 -156
  181. re_common/v2/baselibrary/utils/json_cls.py +16 -16
  182. re_common/v2/baselibrary/utils/mq.py +83 -83
  183. re_common/v2/baselibrary/utils/n_ary_expression_tree.py +243 -243
  184. re_common/v2/baselibrary/utils/string_bool.py +186 -186
  185. re_common/v2/baselibrary/utils/string_clear.py +246 -246
  186. re_common/v2/baselibrary/utils/string_smi.py +18 -18
  187. re_common/v2/baselibrary/utils/stringutils.py +271 -278
  188. re_common/vip/base_step_process.py +11 -11
  189. re_common/vip/baseencodeid.py +90 -90
  190. re_common/vip/changetaskname.py +28 -28
  191. re_common/vip/core_var.py +24 -24
  192. re_common/vip/mmh3Hash.py +89 -89
  193. re_common/vip/proxy/allproxys.py +127 -127
  194. re_common/vip/proxy/allproxys_thread.py +159 -159
  195. re_common/vip/proxy/cnki_proxy.py +153 -153
  196. re_common/vip/proxy/kuaidaili.py +87 -87
  197. re_common/vip/proxy/proxy_all.py +113 -113
  198. re_common/vip/proxy/update_kuaidaili_0.py +42 -42
  199. re_common/vip/proxy/wanfang_proxy.py +152 -152
  200. re_common/vip/proxy/wp_proxy_all.py +181 -181
  201. re_common/vip/read_rawid_to_txt.py +91 -91
  202. re_common/vip/title/__init__.py +5 -5
  203. re_common/vip/title/transform/TransformBookTitleToZt.py +125 -125
  204. re_common/vip/title/transform/TransformConferenceTitleToZt.py +139 -139
  205. re_common/vip/title/transform/TransformCstadTitleToZt.py +195 -195
  206. re_common/vip/title/transform/TransformJournalTitleToZt.py +203 -203
  207. re_common/vip/title/transform/TransformPatentTitleToZt.py +132 -132
  208. re_common/vip/title/transform/TransformRegulationTitleToZt.py +114 -114
  209. re_common/vip/title/transform/TransformStandardTitleToZt.py +135 -135
  210. re_common/vip/title/transform/TransformThesisTitleToZt.py +135 -135
  211. re_common/vip/title/transform/__init__.py +10 -10
  212. {re_common-10.0.37.dist-info → re_common-10.0.39.dist-info}/LICENSE +201 -201
  213. {re_common-10.0.37.dist-info → re_common-10.0.39.dist-info}/METADATA +16 -16
  214. re_common-10.0.39.dist-info/RECORD +248 -0
  215. {re_common-10.0.37.dist-info → re_common-10.0.39.dist-info}/WHEEL +1 -1
  216. re_common-10.0.37.dist-info/RECORD +0 -248
  217. {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
+