arpakitlib 1.8.274__py3-none-any.whl → 1.8.275__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.
@@ -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.274
3
+ Version: 1.8.275
4
4
  Summary: arpakitlib
5
5
  License: Apache-2.0
6
6
  License-File: LICENSE
@@ -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.274.dist-info/METADATA,sha256=DkmB9WE7rAJWz12KECqyBl4VfMb7wBSlwXyREuCwcB4,3983
434
- arpakitlib-1.8.274.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
435
- arpakitlib-1.8.274.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
436
- arpakitlib-1.8.274.dist-info/licenses/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
437
- arpakitlib-1.8.274.dist-info/RECORD,,
434
+ arpakitlib-1.8.275.dist-info/METADATA,sha256=kVwmU3-XuutMHrTuEhuxs0Mw7Y29OF8nLX3m1ks8Xn0,3983
435
+ arpakitlib-1.8.275.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
436
+ arpakitlib-1.8.275.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
437
+ arpakitlib-1.8.275.dist-info/licenses/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
438
+ arpakitlib-1.8.275.dist-info/RECORD,,