django-cfg 1.4.61__py3-none-any.whl → 1.4.63__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.

Potentially problematic release.


This version of django-cfg might be problematic. Click here for more details.

Files changed (179) hide show
  1. django_cfg/__init__.py +1 -1
  2. django_cfg/apps/accounts/services/otp_service.py +3 -14
  3. django_cfg/apps/centrifugo/__init__.py +57 -0
  4. django_cfg/apps/centrifugo/admin/__init__.py +13 -0
  5. django_cfg/apps/centrifugo/admin/centrifugo_log.py +249 -0
  6. django_cfg/apps/centrifugo/admin/config.py +82 -0
  7. django_cfg/apps/centrifugo/apps.py +31 -0
  8. django_cfg/apps/centrifugo/codegen/IMPLEMENTATION_SUMMARY.md +475 -0
  9. django_cfg/apps/centrifugo/codegen/README.md +242 -0
  10. django_cfg/apps/centrifugo/codegen/USAGE.md +616 -0
  11. django_cfg/apps/centrifugo/codegen/__init__.py +19 -0
  12. django_cfg/apps/centrifugo/codegen/discovery.py +246 -0
  13. django_cfg/apps/centrifugo/codegen/generators/go_thin/__init__.py +5 -0
  14. django_cfg/apps/centrifugo/codegen/generators/go_thin/generator.py +174 -0
  15. django_cfg/apps/centrifugo/codegen/generators/go_thin/templates/README.md.j2 +182 -0
  16. django_cfg/apps/centrifugo/codegen/generators/go_thin/templates/client.go.j2 +64 -0
  17. django_cfg/apps/centrifugo/codegen/generators/go_thin/templates/go.mod.j2 +10 -0
  18. django_cfg/apps/centrifugo/codegen/generators/go_thin/templates/rpc_client.go.j2 +300 -0
  19. django_cfg/apps/centrifugo/codegen/generators/go_thin/templates/rpc_client.go.j2.old +267 -0
  20. django_cfg/apps/centrifugo/codegen/generators/go_thin/templates/types.go.j2 +16 -0
  21. django_cfg/apps/centrifugo/codegen/generators/python_thin/__init__.py +7 -0
  22. django_cfg/apps/centrifugo/codegen/generators/python_thin/generator.py +241 -0
  23. django_cfg/apps/centrifugo/codegen/generators/python_thin/templates/README.md.j2 +128 -0
  24. django_cfg/apps/centrifugo/codegen/generators/python_thin/templates/__init__.py.j2 +22 -0
  25. django_cfg/apps/centrifugo/codegen/generators/python_thin/templates/client.py.j2 +73 -0
  26. django_cfg/apps/centrifugo/codegen/generators/python_thin/templates/models.py.j2 +19 -0
  27. django_cfg/apps/centrifugo/codegen/generators/python_thin/templates/requirements.txt.j2 +8 -0
  28. django_cfg/apps/centrifugo/codegen/generators/python_thin/templates/rpc_client.py.j2 +193 -0
  29. django_cfg/apps/centrifugo/codegen/generators/typescript_thin/__init__.py +5 -0
  30. django_cfg/apps/centrifugo/codegen/generators/typescript_thin/generator.py +124 -0
  31. django_cfg/apps/centrifugo/codegen/generators/typescript_thin/templates/README.md.j2 +38 -0
  32. django_cfg/apps/centrifugo/codegen/generators/typescript_thin/templates/client.ts.j2 +25 -0
  33. django_cfg/apps/centrifugo/codegen/generators/typescript_thin/templates/index.ts.j2 +12 -0
  34. django_cfg/apps/centrifugo/codegen/generators/typescript_thin/templates/package.json.j2 +13 -0
  35. django_cfg/apps/centrifugo/codegen/generators/typescript_thin/templates/rpc-client.ts.j2 +137 -0
  36. django_cfg/apps/centrifugo/codegen/generators/typescript_thin/templates/tsconfig.json.j2 +14 -0
  37. django_cfg/apps/centrifugo/codegen/generators/typescript_thin/templates/types.ts.j2 +9 -0
  38. django_cfg/apps/centrifugo/codegen/utils/__init__.py +37 -0
  39. django_cfg/apps/centrifugo/codegen/utils/naming.py +155 -0
  40. django_cfg/apps/centrifugo/codegen/utils/type_converter.py +349 -0
  41. django_cfg/apps/centrifugo/decorators.py +137 -0
  42. django_cfg/apps/centrifugo/management/__init__.py +1 -0
  43. django_cfg/apps/centrifugo/management/commands/__init__.py +1 -0
  44. django_cfg/apps/centrifugo/management/commands/generate_centrifugo_clients.py +254 -0
  45. django_cfg/apps/centrifugo/managers/__init__.py +12 -0
  46. django_cfg/apps/centrifugo/managers/centrifugo_log.py +264 -0
  47. django_cfg/apps/centrifugo/migrations/0001_initial.py +164 -0
  48. django_cfg/apps/centrifugo/migrations/__init__.py +3 -0
  49. django_cfg/apps/centrifugo/models/__init__.py +11 -0
  50. django_cfg/apps/centrifugo/models/centrifugo_log.py +210 -0
  51. django_cfg/apps/centrifugo/registry.py +106 -0
  52. django_cfg/apps/centrifugo/router.py +125 -0
  53. django_cfg/apps/centrifugo/serializers/__init__.py +40 -0
  54. django_cfg/apps/centrifugo/serializers/admin_api.py +264 -0
  55. django_cfg/apps/centrifugo/serializers/channels.py +26 -0
  56. django_cfg/apps/centrifugo/serializers/health.py +17 -0
  57. django_cfg/apps/centrifugo/serializers/publishes.py +16 -0
  58. django_cfg/apps/centrifugo/serializers/stats.py +21 -0
  59. django_cfg/apps/centrifugo/services/__init__.py +12 -0
  60. django_cfg/apps/centrifugo/services/client/__init__.py +29 -0
  61. django_cfg/apps/centrifugo/services/client/client.py +577 -0
  62. django_cfg/apps/centrifugo/services/client/config.py +228 -0
  63. django_cfg/apps/centrifugo/services/client/exceptions.py +212 -0
  64. django_cfg/apps/centrifugo/services/config_helper.py +63 -0
  65. django_cfg/apps/centrifugo/services/dashboard_notifier.py +157 -0
  66. django_cfg/apps/centrifugo/services/logging.py +677 -0
  67. django_cfg/apps/centrifugo/static/django_cfg_centrifugo/css/dashboard.css +260 -0
  68. django_cfg/apps/centrifugo/static/django_cfg_centrifugo/js/dashboard/live_channels.mjs +313 -0
  69. django_cfg/apps/centrifugo/static/django_cfg_centrifugo/js/dashboard/live_testing.mjs +803 -0
  70. django_cfg/apps/centrifugo/static/django_cfg_centrifugo/js/dashboard/main.mjs +333 -0
  71. django_cfg/apps/centrifugo/static/django_cfg_centrifugo/js/dashboard/overview.mjs +432 -0
  72. django_cfg/apps/centrifugo/static/django_cfg_centrifugo/js/dashboard/testing.mjs +33 -0
  73. django_cfg/apps/centrifugo/static/django_cfg_centrifugo/js/dashboard/websocket.mjs +210 -0
  74. django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/components/channels_content.html +46 -0
  75. django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/components/live_channels_content.html +123 -0
  76. django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/components/overview_content.html +45 -0
  77. django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/components/publishes_content.html +84 -0
  78. django_cfg/apps/{ipc/templates/django_cfg_ipc → centrifugo/templates/django_cfg_centrifugo}/components/stat_cards.html +23 -20
  79. django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/components/system_status.html +91 -0
  80. django_cfg/apps/{ipc/templates/django_cfg_ipc → centrifugo/templates/django_cfg_centrifugo}/components/tab_navigation.html +15 -15
  81. django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/components/testing_tools.html +415 -0
  82. django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/layout/base.html +61 -0
  83. django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/pages/dashboard.html +58 -0
  84. django_cfg/apps/centrifugo/templates/django_cfg_centrifugo/tags/connection_script.html +48 -0
  85. django_cfg/apps/centrifugo/templatetags/__init__.py +1 -0
  86. django_cfg/apps/centrifugo/templatetags/centrifugo_tags.py +81 -0
  87. django_cfg/apps/centrifugo/urls.py +31 -0
  88. django_cfg/apps/{ipc → centrifugo}/urls_admin.py +4 -4
  89. django_cfg/apps/centrifugo/views/__init__.py +15 -0
  90. django_cfg/apps/centrifugo/views/admin_api.py +374 -0
  91. django_cfg/apps/centrifugo/views/dashboard.py +15 -0
  92. django_cfg/apps/centrifugo/views/monitoring.py +286 -0
  93. django_cfg/apps/centrifugo/views/testing_api.py +422 -0
  94. django_cfg/apps/support/utils/support_email_service.py +5 -18
  95. django_cfg/apps/tasks/templates/tasks/layout/base.html +0 -2
  96. django_cfg/apps/urls.py +5 -5
  97. django_cfg/core/base/config_model.py +4 -44
  98. django_cfg/core/builders/apps_builder.py +2 -2
  99. django_cfg/core/generation/integration_generators/third_party.py +8 -8
  100. django_cfg/core/utils/__init__.py +5 -0
  101. django_cfg/core/utils/url_helpers.py +73 -0
  102. django_cfg/modules/base.py +7 -7
  103. django_cfg/modules/django_client/core/__init__.py +2 -1
  104. django_cfg/modules/django_client/core/config/config.py +8 -0
  105. django_cfg/modules/django_client/core/generator/__init__.py +42 -2
  106. django_cfg/modules/django_client/core/generator/go/__init__.py +14 -0
  107. django_cfg/modules/django_client/core/generator/go/client_generator.py +124 -0
  108. django_cfg/modules/django_client/core/generator/go/files_generator.py +133 -0
  109. django_cfg/modules/django_client/core/generator/go/generator.py +203 -0
  110. django_cfg/modules/django_client/core/generator/go/models_generator.py +304 -0
  111. django_cfg/modules/django_client/core/generator/go/naming.py +193 -0
  112. django_cfg/modules/django_client/core/generator/go/operations_generator.py +134 -0
  113. django_cfg/modules/django_client/core/generator/go/templates/Makefile.j2 +38 -0
  114. django_cfg/modules/django_client/core/generator/go/templates/README.md.j2 +55 -0
  115. django_cfg/modules/django_client/core/generator/go/templates/client.go.j2 +122 -0
  116. django_cfg/modules/django_client/core/generator/go/templates/enums.go.j2 +49 -0
  117. django_cfg/modules/django_client/core/generator/go/templates/errors.go.j2 +182 -0
  118. django_cfg/modules/django_client/core/generator/go/templates/go.mod.j2 +6 -0
  119. django_cfg/modules/django_client/core/generator/go/templates/main_client.go.j2 +60 -0
  120. django_cfg/modules/django_client/core/generator/go/templates/middleware.go.j2 +388 -0
  121. django_cfg/modules/django_client/core/generator/go/templates/models.go.j2 +28 -0
  122. django_cfg/modules/django_client/core/generator/go/templates/operations_client.go.j2 +142 -0
  123. django_cfg/modules/django_client/core/generator/go/templates/validation.go.j2 +217 -0
  124. django_cfg/modules/django_client/core/generator/go/type_mapper.py +380 -0
  125. django_cfg/modules/django_client/management/commands/generate_client.py +53 -3
  126. django_cfg/modules/django_client/system/generate_mjs_clients.py +3 -1
  127. django_cfg/modules/django_client/system/schema_parser.py +5 -1
  128. django_cfg/modules/django_tailwind/templates/django_tailwind/base.html +1 -0
  129. django_cfg/modules/django_twilio/sendgrid_service.py +7 -4
  130. django_cfg/modules/django_unfold/dashboard.py +25 -19
  131. django_cfg/pyproject.toml +1 -1
  132. django_cfg/registry/core.py +2 -0
  133. django_cfg/registry/modules.py +2 -2
  134. django_cfg/static/js/api/centrifugo/client.mjs +164 -0
  135. django_cfg/static/js/api/centrifugo/index.mjs +13 -0
  136. django_cfg/static/js/api/index.mjs +5 -5
  137. django_cfg/static/js/api/types.mjs +89 -26
  138. {django_cfg-1.4.61.dist-info → django_cfg-1.4.63.dist-info}/METADATA +1 -1
  139. {django_cfg-1.4.61.dist-info → django_cfg-1.4.63.dist-info}/RECORD +142 -68
  140. django_cfg/apps/ipc/README.md +0 -346
  141. django_cfg/apps/ipc/RPC_LOGGING.md +0 -321
  142. django_cfg/apps/ipc/TESTING.md +0 -539
  143. django_cfg/apps/ipc/__init__.py +0 -60
  144. django_cfg/apps/ipc/admin.py +0 -212
  145. django_cfg/apps/ipc/apps.py +0 -28
  146. django_cfg/apps/ipc/migrations/0001_initial.py +0 -137
  147. django_cfg/apps/ipc/migrations/__init__.py +0 -0
  148. django_cfg/apps/ipc/models.py +0 -221
  149. django_cfg/apps/ipc/serializers/__init__.py +0 -29
  150. django_cfg/apps/ipc/serializers/serializers.py +0 -343
  151. django_cfg/apps/ipc/services/__init__.py +0 -7
  152. django_cfg/apps/ipc/services/client/__init__.py +0 -23
  153. django_cfg/apps/ipc/services/client/client.py +0 -621
  154. django_cfg/apps/ipc/services/client/config.py +0 -214
  155. django_cfg/apps/ipc/services/client/exceptions.py +0 -201
  156. django_cfg/apps/ipc/services/logging.py +0 -239
  157. django_cfg/apps/ipc/services/monitor.py +0 -466
  158. django_cfg/apps/ipc/static/django_cfg_ipc/js/dashboard/main.mjs +0 -269
  159. django_cfg/apps/ipc/static/django_cfg_ipc/js/dashboard/overview.mjs +0 -259
  160. django_cfg/apps/ipc/static/django_cfg_ipc/js/dashboard/testing.mjs +0 -375
  161. django_cfg/apps/ipc/static/django_cfg_ipc/js/dashboard.mjs.old +0 -441
  162. django_cfg/apps/ipc/templates/django_cfg_ipc/components/methods_content.html +0 -22
  163. django_cfg/apps/ipc/templates/django_cfg_ipc/components/notifications_content.html +0 -9
  164. django_cfg/apps/ipc/templates/django_cfg_ipc/components/overview_content.html +0 -9
  165. django_cfg/apps/ipc/templates/django_cfg_ipc/components/requests_content.html +0 -23
  166. django_cfg/apps/ipc/templates/django_cfg_ipc/components/system_status.html +0 -47
  167. django_cfg/apps/ipc/templates/django_cfg_ipc/components/testing_tools.html +0 -184
  168. django_cfg/apps/ipc/templates/django_cfg_ipc/layout/base.html +0 -71
  169. django_cfg/apps/ipc/templates/django_cfg_ipc/pages/dashboard.html +0 -56
  170. django_cfg/apps/ipc/urls.py +0 -23
  171. django_cfg/apps/ipc/views/__init__.py +0 -13
  172. django_cfg/apps/ipc/views/dashboard.py +0 -15
  173. django_cfg/apps/ipc/views/monitoring.py +0 -251
  174. django_cfg/apps/ipc/views/testing.py +0 -285
  175. django_cfg/static/js/api/ipc/client.mjs +0 -114
  176. django_cfg/static/js/api/ipc/index.mjs +0 -13
  177. {django_cfg-1.4.61.dist-info → django_cfg-1.4.63.dist-info}/WHEEL +0 -0
  178. {django_cfg-1.4.61.dist-info → django_cfg-1.4.63.dist-info}/entry_points.txt +0 -0
  179. {django_cfg-1.4.61.dist-info → django_cfg-1.4.63.dist-info}/licenses/LICENSE +0 -0
@@ -1,343 +0,0 @@
1
- """
2
- Serializers for RPC Dashboard API.
3
-
4
- DRF serializers for consistent API responses with type hints.
5
- """
6
-
7
-
8
- from rest_framework import serializers
9
-
10
-
11
- class HealthCheckSerializer(serializers.Serializer):
12
- """Serializer for health check response."""
13
-
14
- redis_connected = serializers.BooleanField(
15
- help_text="Whether Redis is connected"
16
- )
17
- stream_exists = serializers.BooleanField(
18
- help_text="Whether the request stream exists"
19
- )
20
- stream_length = serializers.IntegerField(
21
- help_text="Number of entries in the stream"
22
- )
23
- consumer_group_exists = serializers.BooleanField(
24
- required=False,
25
- default=False,
26
- help_text="Whether the consumer group exists"
27
- )
28
- recent_activity = serializers.BooleanField(
29
- help_text="Whether there was recent activity (last 5 min)"
30
- )
31
- last_request_time = serializers.CharField(
32
- required=False,
33
- allow_null=True,
34
- default=None,
35
- help_text="ISO timestamp of last request"
36
- )
37
- error = serializers.CharField(
38
- required=False,
39
- allow_null=True,
40
- help_text="Error message if any"
41
- )
42
-
43
-
44
- class OverviewStatsSerializer(serializers.Serializer):
45
- """Serializer for overview statistics."""
46
-
47
- redis_connected = serializers.BooleanField(
48
- required=False,
49
- help_text="Whether Redis is connected"
50
- )
51
- total_requests_today = serializers.IntegerField(
52
- help_text="Total requests processed today"
53
- )
54
- total_requests_hour = serializers.IntegerField(
55
- required=False,
56
- default=0,
57
- help_text="Total requests in the last hour"
58
- )
59
- active_methods = serializers.ListField(
60
- child=serializers.CharField(),
61
- help_text="List of active RPC methods"
62
- )
63
- top_method = serializers.CharField(
64
- required=False,
65
- allow_null=True,
66
- help_text="Most frequently called method"
67
- )
68
- method_counts = serializers.DictField(
69
- required=False,
70
- help_text="Count of requests per method"
71
- )
72
- avg_response_time_ms = serializers.FloatField(
73
- help_text="Average response time in milliseconds"
74
- )
75
- success_rate = serializers.FloatField(
76
- help_text="Success rate percentage"
77
- )
78
- error_rate = serializers.FloatField(
79
- required=False,
80
- default=0.0,
81
- help_text="Error rate percentage"
82
- )
83
- timestamp = serializers.CharField(
84
- required=False,
85
- help_text="ISO timestamp of the stats"
86
- )
87
- error = serializers.CharField(
88
- required=False,
89
- allow_null=True,
90
- help_text="Error message if any"
91
- )
92
-
93
-
94
- class RPCRequestSerializer(serializers.Serializer):
95
- """Serializer for individual RPC request."""
96
-
97
- id = serializers.CharField(
98
- required=False,
99
- help_text="Stream entry ID"
100
- )
101
- request_id = serializers.CharField(
102
- required=False,
103
- help_text="Unique request ID"
104
- )
105
- timestamp = serializers.CharField(
106
- help_text="ISO timestamp of the request"
107
- )
108
- method = serializers.CharField(
109
- allow_null=True,
110
- help_text="RPC method name"
111
- )
112
- params = serializers.DictField(
113
- allow_null=True,
114
- required=False,
115
- help_text="Request parameters"
116
- )
117
- correlation_id = serializers.CharField(
118
- allow_null=True,
119
- required=False,
120
- help_text="Correlation ID for tracking"
121
- )
122
- source = serializers.CharField(
123
- allow_null=True,
124
- required=False,
125
- help_text="Source of the request"
126
- )
127
-
128
-
129
- class RecentRequestsSerializer(serializers.Serializer):
130
- """Serializer for recent requests response."""
131
-
132
- requests = serializers.ListField(
133
- child=RPCRequestSerializer(),
134
- help_text="List of recent RPC requests"
135
- )
136
- count = serializers.IntegerField(
137
- help_text="Number of requests returned"
138
- )
139
- total_available = serializers.IntegerField(
140
- help_text="Total number of requests available"
141
- )
142
-
143
-
144
- class NotificationTypeStatsSerializer(serializers.Serializer):
145
- """Serializer for notification type statistics."""
146
-
147
- user_activity = serializers.IntegerField(default=0)
148
- system_alert = serializers.IntegerField(default=0)
149
- error_notification = serializers.IntegerField(default=0)
150
- info_message = serializers.IntegerField(default=0)
151
-
152
-
153
- class NotificationStatsSerializer(serializers.Serializer):
154
- """Serializer for notification statistics."""
155
-
156
- total_sent = serializers.IntegerField(
157
- help_text="Total notifications sent"
158
- )
159
- delivery_rate = serializers.FloatField(
160
- help_text="Delivery success rate percentage"
161
- )
162
- by_type = serializers.DictField(
163
- required=False,
164
- help_text="Breakdown by notification type"
165
- )
166
- recent = serializers.ListField(
167
- required=False,
168
- help_text="Recent notifications"
169
- )
170
- last_sent = serializers.CharField(
171
- allow_null=True,
172
- required=False,
173
- help_text="ISO timestamp of last notification"
174
- )
175
- timestamp = serializers.CharField(
176
- required=False,
177
- help_text="ISO timestamp of the stats"
178
- )
179
- error = serializers.CharField(
180
- required=False,
181
- allow_null=True,
182
- help_text="Error message if any"
183
- )
184
-
185
-
186
- class MethodStatSerializer(serializers.Serializer):
187
- """Serializer for individual method statistics."""
188
-
189
- method = serializers.CharField(
190
- help_text="RPC method name"
191
- )
192
- count = serializers.IntegerField(
193
- help_text="Number of calls"
194
- )
195
- percentage = serializers.FloatField(
196
- help_text="Percentage of total calls"
197
- )
198
- avg_time_ms = serializers.FloatField(
199
- required=False,
200
- help_text="Average execution time in milliseconds"
201
- )
202
- avg_time = serializers.FloatField(
203
- required=False,
204
- help_text="Average execution time (alternative field)"
205
- )
206
- success_rate = serializers.FloatField(
207
- required=False,
208
- default=100.0,
209
- help_text="Success rate percentage"
210
- )
211
- last_called = serializers.CharField(
212
- allow_null=True,
213
- required=False,
214
- help_text="ISO timestamp of last call"
215
- )
216
-
217
-
218
- class MethodStatsSerializer(serializers.Serializer):
219
- """Serializer for method statistics response."""
220
-
221
- methods = serializers.ListField(
222
- child=MethodStatSerializer(),
223
- help_text="List of method statistics"
224
- )
225
- count = serializers.IntegerField(
226
- help_text="Total number of methods"
227
- )
228
- total_calls = serializers.IntegerField(
229
- help_text="Total calls across all methods"
230
- )
231
-
232
-
233
- # Testing Serializers
234
-
235
- class TestRPCRequestSerializer(serializers.Serializer):
236
- """Serializer for test RPC request input."""
237
-
238
- method = serializers.CharField(
239
- help_text="RPC method to call"
240
- )
241
- params = serializers.JSONField(
242
- help_text="Parameters for the RPC call"
243
- )
244
- timeout = serializers.IntegerField(
245
- default=10,
246
- min_value=1,
247
- max_value=60,
248
- help_text="Timeout in seconds"
249
- )
250
-
251
-
252
- class TestRPCResponseSerializer(serializers.Serializer):
253
- """Serializer for test RPC response."""
254
-
255
- success = serializers.BooleanField(
256
- help_text="Whether the call was successful"
257
- )
258
- duration_ms = serializers.FloatField(
259
- help_text="Call duration in milliseconds"
260
- )
261
- response = serializers.JSONField(
262
- allow_null=True,
263
- required=False,
264
- help_text="Response data from RPC call"
265
- )
266
- error = serializers.CharField(
267
- allow_null=True,
268
- required=False,
269
- help_text="Error message if failed"
270
- )
271
- correlation_id = serializers.CharField(
272
- help_text="Correlation ID for tracking"
273
- )
274
-
275
-
276
- class LoadTestRequestSerializer(serializers.Serializer):
277
- """Serializer for load test request input."""
278
-
279
- method = serializers.CharField(
280
- help_text="RPC method to test"
281
- )
282
- total_requests = serializers.IntegerField(
283
- min_value=1,
284
- max_value=10000,
285
- help_text="Total number of requests to send"
286
- )
287
- concurrency = serializers.IntegerField(
288
- min_value=1,
289
- max_value=100,
290
- help_text="Number of concurrent requests"
291
- )
292
- params = serializers.JSONField(
293
- required=False,
294
- default=dict,
295
- help_text="Parameters template for RPC calls"
296
- )
297
-
298
-
299
- class LoadTestResponseSerializer(serializers.Serializer):
300
- """Serializer for load test response."""
301
-
302
- test_id = serializers.CharField(
303
- help_text="Unique test ID"
304
- )
305
- started = serializers.BooleanField(
306
- help_text="Whether test was started successfully"
307
- )
308
- message = serializers.CharField(
309
- help_text="Status message"
310
- )
311
-
312
-
313
- class LoadTestStatusSerializer(serializers.Serializer):
314
- """Serializer for load test status."""
315
-
316
- test_id = serializers.CharField(
317
- allow_null=True,
318
- help_text="Unique test ID"
319
- )
320
- running = serializers.BooleanField(
321
- help_text="Whether test is currently running"
322
- )
323
- progress = serializers.IntegerField(
324
- help_text="Number of completed requests"
325
- )
326
- total = serializers.IntegerField(
327
- help_text="Total number of requests"
328
- )
329
- success_count = serializers.IntegerField(
330
- help_text="Number of successful requests"
331
- )
332
- failed_count = serializers.IntegerField(
333
- help_text="Number of failed requests"
334
- )
335
- avg_duration_ms = serializers.FloatField(
336
- help_text="Average duration in milliseconds"
337
- )
338
- elapsed_time = serializers.FloatField(
339
- help_text="Total elapsed time in seconds"
340
- )
341
- rps = serializers.FloatField(
342
- help_text="Requests per second"
343
- )
@@ -1,7 +0,0 @@
1
- """
2
- Services for IPC/RPC module.
3
- """
4
-
5
- from .monitor import RPCMonitor
6
-
7
- __all__ = ['RPCMonitor']
@@ -1,23 +0,0 @@
1
- """
2
- RPC Client services for IPC module.
3
- """
4
-
5
- from .client import DjangoCfgRPCClient
6
- from .config import DjangoCfgRPCConfig
7
- from .exceptions import (
8
- RPCBaseException,
9
- RPCConfigurationError,
10
- RPCConnectionError,
11
- RPCRemoteError,
12
- RPCTimeoutError,
13
- )
14
-
15
- __all__ = [
16
- 'DjangoCfgRPCClient',
17
- 'DjangoCfgRPCConfig',
18
- 'RPCBaseException',
19
- 'RPCConfigurationError',
20
- 'RPCConnectionError',
21
- 'RPCRemoteError',
22
- 'RPCTimeoutError',
23
- ]