Skip to content

Conversation

@gpauloski
Copy link
Collaborator

Description

See #442 for a detailed history/explanation of this feature.

This PR adds a StreamProducer/StreamConsumer interface for streaming objects via proxies. These interfaces combine a Store for bulk object storage and serialization with a pub/sub system for event notification.

Currently, only a simple queue-based pub/sub implementation is provided. Later PRs will add interfaces to other such as Redis and Kafka.

For now, these features are marked as experimental.

Fixes

Type of Change

  • Breaking Change (fix or enhancement which changes existing semantics of the public interface)
  • Enhancement (new features or improvements to existing functionality)
  • Bug (fixes for a bug or issue)
  • Internal (refactoring, style changes, testing, optimizations)
  • Documentation update (changes to documentation or examples)
  • Package (dependencies, versions, package metadata)
  • Development (CI workflows, pre-commit, linters, templates)
  • Security (security related changes)

Testing

New tests added for all features.

Pull Request Checklist

Please confirm the PR meets the following requirements.

  • Tags added to PR (e.g., breaking, bug, enhancement, internal, documentation, package, development, security).
  • Code changes pass pre-commit (e.g., mypy, ruff, etc.).
  • Tests have been added to show the fix is effective or that the new feature works.
  • New and existing unit tests pass locally with the changes.
  • Docs have been updated and reviewed if relevant.

gpauloski and others added 6 commits January 17, 2024 11:49
This commit is to maintain the original interface worked on by
Naz1380 and valhayot in the streaming branch. Due to the limitations
outlined in Issue #442 and challenges with rebasing the original
streaming branch on to main, I've decided to start the implementation of
Issue #442 from scratch.

That said, I wanted to maintain the authorship and original interface in
the commit history so I've copied the main streaming.py file here. I've
left out the custom modifications to the Connector interfaces because
they are pretty bespoke to this specific interface.

The next commit will essentially be modifying the streaming interface
here to match that of Issue #442.

Co-authored-by: Naz1380 <he4687@wayne.edu>
Co-authored-by: valhayot <valeriehayot@gmail.com>
Fixes the following error with multiprocessing on MacOS:

AttributeError: Can't pickle local object 'test_multiprocessing_send_messages.<locals>.subscribe'
@gpauloski gpauloski merged commit 51cb743 into main Jan 17, 2024
@gpauloski gpauloski deleted the issue-442 branch January 17, 2024 21:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New features or improvements to existing functionality

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Finish the streaming interface implementation

2 participants