Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement asynchronous request-reply for VCF annotation #107

Closed
ehclark opened this issue Oct 29, 2024 · 3 comments · Fixed by #108
Closed

Implement asynchronous request-reply for VCF annotation #107

ehclark opened this issue Oct 29, 2024 · 3 comments · Fixed by #108
Assignees
Labels
enhancement New feature or request

Comments

@ehclark
Copy link
Contributor

ehclark commented Oct 29, 2024

Is your feature request related to a problem? Please describe.
Long running requests do not play nicely with cloud-based API hosting services. In general, API response times are expected to be less than 30 seconds. Long running requests unnecessarily consume network resources.

Describe the solution you'd like
Implement an asynchronous request-reply pattern for annotation of a VCF file with VRS IDs using the Celery distributed task queue with Redis as a backend and broker. While the asynchronous request-reply pattern can be implemented in slightly different ways, I intend to follow the semantics defined by Snowflake for integration purposes.

AnyVar would remain deployable and functional without Redis and other async dependencies.

@ehclark ehclark added the enhancement New feature or request label Oct 29, 2024
@ehclark ehclark self-assigned this Oct 29, 2024
@ehclark
Copy link
Contributor Author

ehclark commented Oct 29, 2024

@larrybabb @korikuzma @jsstevenson Would like to hear from you all about whether you feel this is an appropriate enhancement for AnyVar. If not, I can always implement as a separate extension/wrapper.

@jsstevenson
Copy link
Contributor

jsstevenson commented Oct 29, 2024

also tagging @theferrit32

👍 broadly in agreement that we need something, the current VCF annotator tie-in is really more of a toy example in its present state. I think as the first mover you get to make decisions about internals, and we are a ways (to put it lightly) away from having an alternative set of requirements, so I'm not too worried about being tightly coupled to Redis vs RabbitMQ or even to a particular large data handling pattern.

Could we define this in a queueing or processing module adjacent to the storage module so that it's usable along with a Postgres instance as well as Snowflake?

@ehclark
Copy link
Contributor Author

ehclark commented Oct 30, 2024

@jsstevenson Yes my intention would be to provide async VCF annotation support as a backwards compatible, optional add-on. The queue/backend needed by Celery would be assumed to be separate from the storage backend used AnyVar (though in theory the backend and storage could be the same for both since Celery support relational databases via Sql Alchemy). My view would be that provisioning the Celery dependencies would be the responsibility of the deployer rather than something we would package into AnyVar.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants