arpakitlib 1.8.274__py3-none-any.whl → 1.8.276__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.
- arpakitlib/ar_generate_celery_url.py +71 -0
- {arpakitlib-1.8.274.dist-info → arpakitlib-1.8.276.dist-info}/METADATA +2 -1
- {arpakitlib-1.8.274.dist-info → arpakitlib-1.8.276.dist-info}/RECORD +6 -5
- {arpakitlib-1.8.274.dist-info → arpakitlib-1.8.276.dist-info}/WHEEL +0 -0
- {arpakitlib-1.8.274.dist-info → arpakitlib-1.8.276.dist-info}/entry_points.txt +0 -0
- {arpakitlib-1.8.274.dist-info → arpakitlib-1.8.276.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,71 @@
|
|
1
|
+
from urllib.parse import quote_plus
|
2
|
+
|
3
|
+
_ARPAKIT_LIB_MODULE_VERSION = "3.0"
|
4
|
+
|
5
|
+
|
6
|
+
def generate_celery_url(
|
7
|
+
*,
|
8
|
+
scheme: str = "redis", # или amqp, sqs, etc.
|
9
|
+
user: str | None = None,
|
10
|
+
password: str | None = None,
|
11
|
+
host: str = "127.0.0.1",
|
12
|
+
port: int | None = 6379,
|
13
|
+
database: str | int | None = 0, # для Redis — номер БД; для AMQP — vhost
|
14
|
+
**query_params
|
15
|
+
) -> str:
|
16
|
+
"""
|
17
|
+
Генерирует Celery broker/backend URL.
|
18
|
+
|
19
|
+
Примеры:
|
20
|
+
redis://:mypassword@redis:6379/0
|
21
|
+
amqp://user:pass@rabbit:5672/myvhost
|
22
|
+
redis://localhost:6379/1?ssl_cert_reqs=none
|
23
|
+
"""
|
24
|
+
# Формируем часть авторизации
|
25
|
+
auth_part = ""
|
26
|
+
if user and password:
|
27
|
+
auth_part = f"{quote_plus(user)}:{quote_plus(password)}@"
|
28
|
+
elif password and not user:
|
29
|
+
# Redis-style — пароль без юзера
|
30
|
+
auth_part = f":{quote_plus(password)}@"
|
31
|
+
elif user:
|
32
|
+
auth_part = f"{quote_plus(user)}@"
|
33
|
+
|
34
|
+
# Формируем хост и порт
|
35
|
+
host_part = host
|
36
|
+
if port:
|
37
|
+
host_part += f":{port}"
|
38
|
+
|
39
|
+
# Формируем "базу" (для Redis — номер, для AMQP — vhost)
|
40
|
+
db_part = ""
|
41
|
+
if database is not None:
|
42
|
+
db_part = f"/{quote_plus(str(database))}"
|
43
|
+
|
44
|
+
# Формируем query параметры
|
45
|
+
query_part = ""
|
46
|
+
if query_params:
|
47
|
+
query_items = [f"{key}={quote_plus(str(value))}" for key, value in query_params.items()]
|
48
|
+
query_part = f"?{'&'.join(query_items)}"
|
49
|
+
|
50
|
+
return f"{scheme}://{auth_part}{host_part}{db_part}{query_part}"
|
51
|
+
|
52
|
+
|
53
|
+
def __example():
|
54
|
+
print(generate_celery_url())
|
55
|
+
# → redis://127.0.0.1:6379/0
|
56
|
+
|
57
|
+
# Redis с паролем
|
58
|
+
print(generate_celery_url(password="supersecret", host="redis"))
|
59
|
+
# → redis://:supersecret@redis:6379/0
|
60
|
+
|
61
|
+
# RabbitMQ (AMQP)
|
62
|
+
print(generate_celery_url(scheme="amqp", user="guest", password="guest", host="rabbitmq"))
|
63
|
+
# → amqp://guest:guest@rabbitmq:6379/0
|
64
|
+
|
65
|
+
# Redis с параметрами
|
66
|
+
print(generate_celery_url(password="pass", ssl_cert_reqs="none", socket_timeout=10))
|
67
|
+
# → redis://:pass@127.0.0.1:6379/0?ssl_cert_reqs=none&socket_timeout=10
|
68
|
+
|
69
|
+
|
70
|
+
if __name__ == '__main__':
|
71
|
+
__example()
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: arpakitlib
|
3
|
-
Version: 1.8.
|
3
|
+
Version: 1.8.276
|
4
4
|
Summary: arpakitlib
|
5
5
|
License: Apache-2.0
|
6
6
|
License-File: LICENSE
|
@@ -54,6 +54,7 @@ Requires-Dist: pytz (>=2024.2,<2025.0)
|
|
54
54
|
Requires-Dist: pyzabbix (>=1.3.1,<2.0.0)
|
55
55
|
Requires-Dist: qrcode (>=8.2,<9.0)
|
56
56
|
Requires-Dist: rapidfuzz (>=3.14.1,<4.0.0)
|
57
|
+
Requires-Dist: redis (>=6.4.0,<7.0.0)
|
57
58
|
Requires-Dist: requests-ntlm (>=1.3.0,<2.0.0)
|
58
59
|
Requires-Dist: requests[socks] (>=2.32.3,<3.0.0)
|
59
60
|
Requires-Dist: scipy (>=1.15.1,<2.0.0)
|
@@ -399,6 +399,7 @@ arpakitlib/ar_exception_util.py,sha256=3hZKsj34TZVdmd4JAQz7w515smWqB8o3gTwAEjuMd
|
|
399
399
|
arpakitlib/ar_file_storage_in_dir_util.py,sha256=Zh922S6-aIy0p_Fen8GTTrGpixpPQ6c-wFLukiSK4Ck,4091
|
400
400
|
arpakitlib/ar_file_util.py,sha256=GUdJYm1tUZnYpY-SIPRHAZBHGra8NKy1eYEI0D5AfhY,489
|
401
401
|
arpakitlib/ar_func_util.py,sha256=lG0bx_DtxWN4skbUim0liRZ6WUyLVV8Qfk6iZNtCZOs,1042
|
402
|
+
arpakitlib/ar_generate_celery_url.py,sha256=ddzOokXKZRGRDQu18amnW5ZaekcMihwsmyUn0FzpgVU,2274
|
402
403
|
arpakitlib/ar_generate_simple_code.py,sha256=EkrebrTi7sArSRAuxvN5BPm_A0-dFSCZgdoJhx5kPhk,344
|
403
404
|
arpakitlib/ar_hash_util.py,sha256=Iqy6KBAOLBQMFLWv676boI5sV7atT2B-fb7aCdHOmIQ,340
|
404
405
|
arpakitlib/ar_http_request_util.py,sha256=PCUtGOQIvNScrLqD_9Z8LqT-7a-lP2y-Y-CH5vGdn7Q,7663
|
@@ -430,8 +431,8 @@ arpakitlib/ar_sqlalchemy_drop_check_constraints.py,sha256=XEqnMrIwSYasW_UOJ8xU-J
|
|
430
431
|
arpakitlib/ar_sqlalchemy_util.py,sha256=nUDCxhu0l8P0eBCdLyXej3_yLvBlB3LrGhMWzAekm5E,16532
|
431
432
|
arpakitlib/ar_str_util.py,sha256=2lGpnXDf2h1cBZpVf5i1tX_HCv5iBd6IGnrCw4QWWlY,4350
|
432
433
|
arpakitlib/ar_type_util.py,sha256=Cs_tef-Fc5xeyAF54KgISCsP11NHyzIsglm4S3Xx7iM,4049
|
433
|
-
arpakitlib-1.8.
|
434
|
-
arpakitlib-1.8.
|
435
|
-
arpakitlib-1.8.
|
436
|
-
arpakitlib-1.8.
|
437
|
-
arpakitlib-1.8.
|
434
|
+
arpakitlib-1.8.276.dist-info/METADATA,sha256=mTUGXK-3Vr9PbhhG-IZiFZ37jfjurTscAhqK_3ZvOMg,4021
|
435
|
+
arpakitlib-1.8.276.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
|
436
|
+
arpakitlib-1.8.276.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
|
437
|
+
arpakitlib-1.8.276.dist-info/licenses/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
|
438
|
+
arpakitlib-1.8.276.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|