🚀 New issue to ag2ai/faststream by @dzeveloper
📝 Feature: Consumer-Only Mode for KafkaBroker (#2879)
When deploying a subscriber-only service, it's common to provision Kafka credentials scoped strictly to
Proposal:
#enhancement #good_first_issue #confluent #aiokafka #faststream #ag2ai
sent via relator
📝 Feature: Consumer-Only Mode for KafkaBroker (#2879)
When deploying a subscriber-only service, it's common to provision Kafka credentials scoped strictly to
READ + DESCRIBE ACLs on specific topics. Today, KafkaBroker always starts a producer during broker.start(), regardless of whether any @broker.publisher is registered. This causes the producer to attempt a connection using consumer-only credentials, which fails or raises errors at the broker/ACL level.Proposal:
# Option A: broker-level flag
broker = KafkaBroker("localhost:9092", consumer_only=True)
# Option B: skip producer if no publishers are registered (automatic)
# No API change needed — broker inspects registered publishers at start()
#enhancement #good_first_issue #confluent #aiokafka #faststream #ag2ai
sent via relator
👍1
Добавить два поля в openapi.Schema
https://github.com/wemake-services/django-modern-rest/issues/1039
#django_modern_rest #openapi
https://github.com/wemake-services/django-modern-rest/issues/1039
#django_modern_rest #openapi
GitHub
Support `$dynamicRef` and `$dynamicAnchor` openapi props · Issue #1039 · wemake-services/django-modern-rest
Spec: https://spec.openapis.org/oas/v3.2.0.html#generic-template-data-structures https://learn.openapis.org/referencing/dynamic.html Example: https://json-schema.org/blog/posts/dynamicref-and-gener...
👍1
🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Flaky test: `test_redis_sync_leaky_bucket` (#1043)
Output:
It fails from time to time: https://github.com/wemake-services/django-modern-rest/actions/runs/26490639540/job/78007463856?pr=1042
#bug #good_first_issue #help_wanted #django_modern_rest
sent via relator
📝 Flaky test: `test_redis_sync_leaky_bucket` (#1043)
Output:
______________________ test_redis_sync_leaky_bucket[True] ______________________
tests/test_integration/test_throttling/test_backends/test_redis_backend/test_redis_backend.py:110: in test_redis_sync_leaky_bucket
assert response.status_code == HTTPStatus.TOO_MANY_REQUESTS
E assert 200 == <HTTPStatus.TOO_MANY_REQUESTS: 429>
E + where 200 = <HttpResponse status_code=200, "application/json">.status_code
E + and <HTTPStatus.TOO_MANY_REQUESTS: 429> = HTTPStatus.TOO_MANY_REQUESTS
================================ tests coverage ================================
=========================== short test summary info ============================
FAILED tests/test_integration/test_throttling/test_backends/test_redis_backend/test_redis_backend.py::test_redis_sync_leaky_bucket[True] - assert 200 == <HTTPStatus.TOO_MANY_REQUESTS: 429>
+ where 200 = <HttpResponse status_code=200, "application/json">.status_code
+ and <HTTPStatus.TOO_MANY_REQUESTS: 429> = HTTPStatus.TOO_MANY_REQUESTS
============ 1 failed, 2479 passed, 10 skipped in 243.50s (0:04:03) ============
It fails from time to time: https://github.com/wemake-services/django-modern-rest/actions/runs/26490639540/job/78007463856?pr=1042
#bug #good_first_issue #help_wanted #django_modern_rest
sent via relator
🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Flaky test: `test_sse_ping_with_last` (#1046)
Happened on mypyc wheels cp314-macosx_x86_64
For some reason
Let's fix it.
#bug #good_first_issue #help_wanted #django_modern_rest
sent via relator
📝 Flaky test: `test_sse_ping_with_last` (#1046)
Happened on mypyc wheels cp314-macosx_x86_64
=================================== FAILURES ===================================
___________________________ test_sse_ping_with_last ____________________________
dmr_async_rf = <dmr.test.DMRAsyncRequestFactory object at 0x114ddad60>
@pytest.mark.asyncio
async def test_sse_ping_with_last(
dmr_async_rf: DMRAsyncRequestFactory,
) -> None:
"""Ensures that valid sse produces valid results."""
request = dmr_async_rf.post('/whatever/', data={'produce_last': True})
response = await dmr_async_rf.wrap(_PingSSE.as_view()(request))
assert isinstance(response, StreamingResponse)
assert response.streaming
assert response.status_code == HTTPStatus.OK
assert response.headers == {
'Cache-Control': 'no-cache',
'Content-Type': 'text/event-stream',
'X-Accel-Buffering': 'no',
'Connection': 'keep-alive',
}
> assert await get_streaming_content(response) == (
b'data: 1\r\n'
b'\r\n'
b': ping\r\n'
b'\r\n'
b'data: 2\r\n'
b'\r\n'
b': ping\r\n'
b'\r\n'
b': ping\r\n'
b'\r\n'
b'data: 3\r\n'
b'\r\n'
)
E AssertionError: assert b'data: 1\r\n...ta: 3\r\n\r\n' == b'data: 1\r\n...ta: 3\r\n\r\n'
E
E At index 42 diff: b'd' != b':'
E
E Full diff:
E - (b'data: 1\r\n\r\n: ping\r\n\r\ndata: 2\r\n\r\n: ping\r\n\r\n: ping\r\n\r\ndata'
E ? --------------
E + (b'data: 1\r\n\r\n: ping\r\n\r\ndata: 2\r\n\r\n: ping\r\n\r\ndata: 3\r\n\r\n')
E ? +++++++++++ +
E - b': 3\r\n\r\n')
For some reason
data: 3 was not sent.Let's fix it.
#bug #good_first_issue #help_wanted #django_modern_rest
sent via relator
🚀 New issue to wemake-services/django-modern-rest by @sobolevn
📝 Add default admin page for `dmr/security/jwt/blocklist` (#1054)
Right now our app for jwt blocklisting has a default model: https://github.com/wemake-services/django-modern-rest/blob/master/dmr/security/jwt/blocklist/models.py
But, it does not have a default
Good example: https://github.com/Dresdn/django-modern-rest/blob/3324d0aecf32509b5434df7e8826d7be6ddac7a8/dmr/security/token/admin.py
This is a very easy task :)
#feature #good_first_issue #help_wanted #django_modern_rest
sent via relator
📝 Add default admin page for `dmr/security/jwt/blocklist` (#1054)
Right now our app for jwt blocklisting has a default model: https://github.com/wemake-services/django-modern-rest/blob/master/dmr/security/jwt/blocklist/models.py
But, it does not have a default
admin.py file.Good example: https://github.com/Dresdn/django-modern-rest/blob/3324d0aecf32509b5434df7e8826d7be6ddac7a8/dmr/security/token/admin.py
This is a very easy task :)
#feature #good_first_issue #help_wanted #django_modern_rest
sent via relator