MeUtils 2024.11.29.21.10.57__py3-none-any.whl → 2024.11.29.22.4.24__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: MeUtils
3
- Version: 2024.11.29.21.10.57
3
+ Version: 2024.11.29.22.4.24
4
4
  Summary: description
5
5
  Home-page: https://github.com/yuanjie-ai/MeUtils
6
6
  Author: yuanjie
@@ -61,42 +61,42 @@ Requires-Dist: sse-starlette ; extra == 'ai'
61
61
  Requires-Dist: openai ; extra == 'ai'
62
62
  Requires-Dist: langchain ; extra == 'ai'
63
63
  Provides-Extra: all
64
- Requires-Dist: openai ; extra == 'all'
65
- Requires-Dist: pymupd ; extra == 'all'
66
- Requires-Dist: redis-py-cluster ; extra == 'all'
67
- Requires-Dist: seaborn ; extra == 'all'
68
- Requires-Dist: gunicorn ; extra == 'all'
69
- Requires-Dist: simplejson ; extra == 'all'
70
64
  Requires-Dist: pandas-profiling[notebook] ; extra == 'all'
71
- Requires-Dist: jmespath ; extra == 'all'
72
- Requires-Dist: geopy ; extra == 'all'
73
- Requires-Dist: cachetools ; extra == 'all'
74
- Requires-Dist: pandas-summary ; extra == 'all'
75
65
  Requires-Dist: thriftpy2 ; extra == 'all'
76
- Requires-Dist: pymilvus ; extra == 'all'
77
- Requires-Dist: thefuck ; extra == 'all'
78
- Requires-Dist: pymongo ; extra == 'all'
79
- Requires-Dist: streamlit ; extra == 'all'
66
+ Requires-Dist: pymupd ; extra == 'all'
67
+ Requires-Dist: asyncmy ; extra == 'all'
68
+ Requires-Dist: pymysql ; extra == 'all'
69
+ Requires-Dist: reportlab ; extra == 'all'
80
70
  Requires-Dist: missingno ; extra == 'all'
71
+ Requires-Dist: pymilvus ; extra == 'all'
81
72
  Requires-Dist: schedule ; extra == 'all'
82
- Requires-Dist: jinja2 ; extra == 'all'
83
- Requires-Dist: langchain ; extra == 'all'
84
- Requires-Dist: pyarrow ; extra == 'all'
85
- Requires-Dist: faiss-cpu ; extra == 'all'
73
+ Requires-Dist: geopy ; extra == 'all'
74
+ Requires-Dist: pandas-summary ; extra == 'all'
75
+ Requires-Dist: jmespath ; extra == 'all'
76
+ Requires-Dist: cachetools ; extra == 'all'
77
+ Requires-Dist: thefuck ; extra == 'all'
78
+ Requires-Dist: redis-py-cluster ; extra == 'all'
86
79
  Requires-Dist: iteration-utilities ; extra == 'all'
87
80
  Requires-Dist: fastapi[all] ; extra == 'all'
88
- Requires-Dist: pymysql ; extra == 'all'
89
- Requires-Dist: asyncmy ; extra == 'all'
81
+ Requires-Dist: simplejson ; extra == 'all'
82
+ Requires-Dist: sqlalchemy ; extra == 'all'
83
+ Requires-Dist: pymongo ; extra == 'all'
84
+ Requires-Dist: seaborn ; extra == 'all'
85
+ Requires-Dist: fastapi ; extra == 'all'
86
+ Requires-Dist: pyarrow ; extra == 'all'
90
87
  Requires-Dist: uvicorn ; extra == 'all'
91
- Requires-Dist: reportlab ; extra == 'all'
88
+ Requires-Dist: jieba ; extra == 'all'
89
+ Requires-Dist: faiss-cpu ; extra == 'all'
92
90
  Requires-Dist: polars ; extra == 'all'
93
- Requires-Dist: fastapi ; extra == 'all'
94
- Requires-Dist: filetype ; extra == 'all'
91
+ Requires-Dist: langchain ; extra == 'all'
92
+ Requires-Dist: streamlit ; extra == 'all'
95
93
  Requires-Dist: sse-starlette ; extra == 'all'
96
94
  Requires-Dist: pretty-errors ; extra == 'all'
95
+ Requires-Dist: filetype ; extra == 'all'
96
+ Requires-Dist: gunicorn ; extra == 'all'
97
+ Requires-Dist: openai ; extra == 'all'
97
98
  Requires-Dist: dataframe-image ; extra == 'all'
98
- Requires-Dist: jieba ; extra == 'all'
99
- Requires-Dist: sqlalchemy ; extra == 'all'
99
+ Requires-Dist: jinja2 ; extra == 'all'
100
100
  Provides-Extra: ann
101
101
  Requires-Dist: pymilvus ; extra == 'ann'
102
102
  Requires-Dist: faiss-cpu ; extra == 'ann'
@@ -350,7 +350,7 @@ meutils/apis/jiema/yezi.py,sha256=26vhnA3lC5049Rqx-CHO-wyGKbdZAfvjEOG90W38cr0,36
350
350
  meutils/apis/kling/__init__.py,sha256=pKz40SEjui1dhHBD-icyNTJOYhzLvxLxJCwszuH4vio,271
351
351
  meutils/apis/kling/api.py,sha256=AuVQ9URmrbTlz7dEv_kIyhA9fMTZPL9rF3Td6KxTIMA,2183
352
352
  meutils/apis/kling/images.py,sha256=FcCkvA4x1Po3SuugfQa8klT0Lrj7fq4N8kbzx6luUxI,5095
353
- meutils/apis/kling/kolors_virtual_try_on.py,sha256=xn9zwUjdqRZAuCQ7vxFrTK01b6ScyhF4aMxEkm8-CG4,2818
353
+ meutils/apis/kling/kolors_virtual_try_on.py,sha256=khIoa6zPGA7tALocrIDBZmVa5ik1rprp-iy4VcWgzSM,3094
354
354
  meutils/apis/kling/videos.py,sha256=6z3w0gQHPe3BQNid4ZO2DfYSqvry44EMehG9U0qSB3E,2115
355
355
  meutils/apis/kling/鉴权.py,sha256=1kR67Mb0PxEo4ZxLVJZys4Iru9BUnS_Qqo2cbpLZNCU,842
356
356
  meutils/apis/kuaishou/__init__.py,sha256=fDzJvVQl_CxHyiL3bCPH9x7gOLYfK6QuW2iQ33eez7c,243
@@ -418,8 +418,8 @@ meutils/apis/voice_clone/fish_api.py,sha256=pDpE-B8HFiGIOV3NVd1HmFrCC2GQc3wH-81o
418
418
  meutils/async_task/__init__.py,sha256=45cUr-GWvQ1JFYGOYPOIkHLyTR3JbfP_PEYrmktpMLo,367
419
419
  meutils/async_task/celery_config.py,sha256=-p8-uGQq0HFFifZWZY6duCxEDcPJpWA4A_Rnz-WNysU,3430
420
420
  meutils/async_task/common.py,sha256=ZJ4e0CsEJf1ppPmGSwPCwhZBAkUL5xsi_t1ny-bJuko,845
421
- meutils/async_task/demo_create_tasks.py,sha256=p2CntKKd9tSrlfyx63uGu57SHQlu2x6XBi1u7y6LTYo,2577
422
- meutils/async_task/utils.py,sha256=Smu3RQ41J0BbYwAcoFlb84Mmw4QLxKhT2S8S1i6V30I,4303
421
+ meutils/async_task/demo_create_tasks.py,sha256=Eu4XjNxRROmMJ0oKfbEhrfLTaOUgedbAhmFyQx5nOQc,2699
422
+ meutils/async_task/utils.py,sha256=2ImDpIVfo8hMBGYRGF3UG8D7T4iQSg5cnff449CAIQc,5039
423
423
  meutils/async_task/通用设计.py,sha256=kGdrJHJu9VoOkyGHREn0KUtBTibAaLIcG0O6hEJNhLA,3232
424
424
  meutils/async_task/tasks/__init__.py,sha256=flHRXJMdts_9az9T9V1c5l3Y-gaDD88COWrARr4WAKU,246
425
425
  meutils/async_task/tasks/_all.py,sha256=Vz63k9yvgj-IBGjekm0u2t571TTT0nMRMqcPvPqJAbY,533
@@ -460,7 +460,7 @@ meutils/config_utils/lark_utils/demo.py,sha256=3g0Fs7oLaeW75T60gYWMLgyNg1OnfOjfH
460
460
  meutils/config_utils/lark_utils/x.py,sha256=MlMQGhehP9xMEgetxVCX68XFaosfKoW1JA5cZ3JqN2w,1857
461
461
  meutils/crawlers/__init__.py,sha256=TBU4xA-IOsHV-0yIkW7YXxn_QT7TT8NncqxO7IykEfs,271
462
462
  meutils/data/SimHei.ttf,sha256=-XEnekS5yHP_URkT4XBI2w22ylV-KxudhkeIYFbrILA,10062565
463
- meutils/data/VERSION,sha256=4yFGgrgMoRyZgOnWowpPe_gMHE8Mw4LnDJaIYum_RiU,19
463
+ meutils/data/VERSION,sha256=lutwKDTq2yFt2y19_RtkZBcm4ftMY5MUEew8u9M74mM,19
464
464
  meutils/data/_FLAG,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
465
465
  meutils/data/_SUCCESS,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
466
466
  meutils/data/__init__.py,sha256=Hfwkkxs4zHqKhxht0YrhS566a9P5axtmgNvM5wF8ceQ,243
@@ -655,7 +655,7 @@ meutils/schemas/runwayml_types.py,sha256=q6g00kg1PYCDjpw-notgbcUGwRAlIa8kAmU52Zu
655
655
  meutils/schemas/siliconflow_types.py,sha256=amOygjMqbSss4021sCNX1p5d-k1wa2tNLr0gnke1Vrc,8429
656
656
  meutils/schemas/step_types.py,sha256=nGTPXZ7RwOF2RTsPBQguLLcIaBxHs4bsZkYa_LalcJ0,648
657
657
  meutils/schemas/suno_types.py,sha256=KTdcwaJNDUFiY8izVJSZdGZgEMb0OhdiRR_dJVN-Cz0,14967
658
- meutils/schemas/task_types.py,sha256=bPcW6r-X0P28SkYwF8E6OoieFoMMVLQBb6s-ca5Dp0k,4380
658
+ meutils/schemas/task_types.py,sha256=pMVRtvPUxb5bMQ9SKn2gzMRUAvTUMTmsPFryrsARgss,4561
659
659
  meutils/schemas/translator_types.py,sha256=xufNQeyim7RhkzAK_J5_JchZfqaUBDXFwMtrPUu1xzI,627
660
660
  meutils/schemas/tripo3d_types.py,sha256=mQF65HwHYmczRgAIuXK5hGxWDWNYDq-Xu9pja7Dwy4o,1452
661
661
  meutils/schemas/tryblend_types.py,sha256=glZ0diRJvZmfQotcCWYBA832inihy8TvVWxWZ64CzWA,27793
@@ -793,9 +793,9 @@ meutils/tools/seize.py,sha256=nOKAS63w-Lbi48I0m2MPhdsokUTwxco0laPxYVmW4Mw,1064
793
793
  meutils/tools/service_monitor.py,sha256=ibsLtBN2g2DL7ZnLJ8vhiZOiOcqTAyx711djDdBK-3M,1255
794
794
  meutils/tools/sys_monitor.py,sha256=6MoyzrItqDUOSjfHcMJmMofQkEPTW36CT_aKui0rg84,429
795
795
  meutils/tools/token_monitor.py,sha256=Np-YK-R4P4IPAXyZvMxwvXI4sFmNJQAQK1lSegNaYpA,997
796
- MeUtils-2024.11.29.21.10.57.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
797
- MeUtils-2024.11.29.21.10.57.dist-info/METADATA,sha256=Tw5j4FMIf79a5n19vmEYQSfSi6ielW7FQtj_PTjJyPQ,6144
798
- MeUtils-2024.11.29.21.10.57.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
799
- MeUtils-2024.11.29.21.10.57.dist-info/entry_points.txt,sha256=lufZlBHRqqZKdY-ZQJ4CSZb0qhV5hQC37egZna9M7ug,357
800
- MeUtils-2024.11.29.21.10.57.dist-info/top_level.txt,sha256=cInfxMmkgNOskurdjwP5unau4rA7Uw48nu07tYhS7KY,22
801
- MeUtils-2024.11.29.21.10.57.dist-info/RECORD,,
796
+ MeUtils-2024.11.29.22.4.24.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
797
+ MeUtils-2024.11.29.22.4.24.dist-info/METADATA,sha256=nJ4igJPKRQXmhEKQmkvyDs4VVxk-0l34P4pVcs8hEB4,6143
798
+ MeUtils-2024.11.29.22.4.24.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
799
+ MeUtils-2024.11.29.22.4.24.dist-info/entry_points.txt,sha256=lufZlBHRqqZKdY-ZQJ4CSZb0qhV5hQC37egZna9M7ug,357
800
+ MeUtils-2024.11.29.22.4.24.dist-info/top_level.txt,sha256=cInfxMmkgNOskurdjwP5unau4rA7Uw48nu07tYhS7KY,22
801
+ MeUtils-2024.11.29.22.4.24.dist-info/RECORD,,
@@ -10,6 +10,7 @@
10
10
  import jwt
11
11
 
12
12
  from meutils.pipe import *
13
+ from meutils.schemas.task_types import TaskResponse ############# 根据这个重构
13
14
  from meutils.schemas.kling_types import API_BASE_URL, TryOnRequest, TaskResponse
14
15
  from meutils.config_utils.lark_utils import get_next_token_for_polling
15
16
  from meutils.decorators.retry import retrying
@@ -33,9 +34,12 @@ def encode_jwt_token(token):
33
34
  return token
34
35
 
35
36
 
37
+ ###################################################################### 重构
38
+
39
+ ######################################################################
36
40
  @alru_cache(ttl=3600)
37
41
  @retrying(title=__name__)
38
- async def create_task(request: TryOnRequest, token: Optional[str] = None):
42
+ async def create_task(request: TryOnRequest, token: Optional[str] = None): ###### 所有的 TaskResponse标准化
39
43
  token = token or await get_next_token_for_polling(FEISHU_URL)
40
44
  token = encode_jwt_token(token)
41
45
 
@@ -11,7 +11,7 @@
11
11
  from meutils.pipe import *
12
12
 
13
13
  from meutils.async_task import worker
14
- from meutils.async_task.tasks import test
14
+ from meutils.async_task.tasks import test, kling
15
15
  from celery.result import AsyncResult
16
16
 
17
17
 
@@ -70,3 +70,8 @@ if __name__ == '__main__':
70
70
 
71
71
  # test.ado_pydantic_task.apply_async(kwargs={"request": test.Request().model_dump()})
72
72
  # test.ado_pydantic_task_2.apply_async(kwargs={"request": test.Request().model_dump()})
73
+
74
+
75
+ kling.create_task.apply_async(kwargs={"request": kling.kolors_virtual_try_on.TryOnRequest().model_dump()})
76
+
77
+
@@ -16,6 +16,11 @@ from meutils.schemas.task_types import TaskResponse
16
16
  from meutils.db.orm import update_or_insert
17
17
  from meutils.schemas.db.oneapi_types import OneapiTask
18
18
 
19
+ # 或者方案2:使用 BackgroundTasks
20
+ from fastapi import BackgroundTasks
21
+
22
+ background_tasks = BackgroundTasks()
23
+
19
24
 
20
25
  async def create_task(async_task, request: Union[BaseModel, dict]):
21
26
  if not isinstance(request, dict):
@@ -59,11 +64,14 @@ async def get_task(
59
64
  :return:
60
65
  """
61
66
  result = AsyncResult(id=task_id)
67
+ # logger.debug(bjson(result._get_task_meta()))
68
+ # logger.debug(bjson(result.get()))
69
+
70
+ data = result.get() # 创建任务时:remote task的返回结果
71
+ logger.debug(bjson(data))
62
72
 
63
73
  if result.ready():
64
74
  if result.successful():
65
- data = result.get() # 创建任务时:remote task的返回结果
66
-
67
75
  remote_task_id = (
68
76
  data.get("task_id") # 远程任务 写在最外层
69
77
  or data.get("id")
@@ -108,7 +116,8 @@ async def get_task(
108
116
 
109
117
  # 更新到数据库:异步任务
110
118
  update_fn = partial(update_oneapi_from_response, task_response=response)
111
- asyncio.create_task(update_or_insert(OneapiTask, filter_kwargs, update_fn)) # 测试是否会执行
119
+ background_tasks.add_task(update_or_insert, OneapiTask, filter_kwargs, update_fn) # fastapi 服务里会运行
120
+ # await background_tasks.__call__() # 调试
112
121
 
113
122
  return response
114
123
 
@@ -143,4 +152,16 @@ async def update_oneapi_from_response(task: OneapiTask, task_response: TaskRespo
143
152
 
144
153
 
145
154
  if __name__ == '__main__':
146
- pass
155
+ from meutils.async_task import worker, shared_task #######重要 需要识别到worker
156
+
157
+ from meutils.apis.kling import kolors_virtual_try_on
158
+
159
+ task_id = "807e1525-11ff-40ca-8572-1cfc33d69673"
160
+ filter_kwargs = {
161
+ "task_id": task_id, #########理论上只需这个
162
+ "user_id": 1,
163
+ "platform": "kling",
164
+ "action": "kling", # 模型
165
+ }
166
+
167
+ arun(get_task(task_id, kolors_virtual_try_on.get_task, filter_kwargs))
meutils/data/VERSION CHANGED
@@ -1 +1 @@
1
- 2024.11.29.21.10.57
1
+ 2024.11.29.22.04.24
@@ -54,12 +54,16 @@ class TaskResponse(BaseModel):
54
54
  data: Optional[Any] = None
55
55
 
56
56
  # 系统水印:可以存token
57
- # user_id: Optional[str] = None
58
57
  system_fingerprint: Optional[str] = None
59
58
 
59
+ model: Optional[str] = None
60
+
61
+ # created_at: int = Field(default_factory=lambda: int(time.time()))
62
+ created_at: Union[str, int] = Field(default_factory=lambda: datetime.datetime.today().isoformat())
63
+
60
64
  def __init__(self, /, **data: Any):
61
65
  super().__init__(**data)
62
- self.status = STATUSES.get(self.status, "UNKNOWN")
66
+ self.status = STATUSES.get(self.status.lower(), "UNKNOWN")
63
67
 
64
68
  class Config:
65
69
  # 允许额外字段,增加灵活性
@@ -126,11 +130,11 @@ class Task(BaseModel):
126
130
  data: Optional[Any] = None
127
131
  metadata: Optional[Any] = None
128
132
  # metadata: Optional[Dict[str, str]] = None
129
- description: Optional[str] = None
130
133
 
131
134
  system_fingerprint: Optional[str] = None # api-key token cookie 加密
132
135
 
133
136
  created_at: int = Field(default_factory=lambda: int(time.time()))
137
+ description: Optional[str] = None
134
138
 
135
139
 
136
140
  class FileTask(BaseModel):