kraemer-lab / GRAPEVNE

Graphical Analytical Pipeline Development Evironment
MIT License
6 stars 3 forks source link

[BUG]: ERROR 403: rate limit exceeded #205

Open joetsui1994 opened 5 months ago

joetsui1994 commented 5 months ago

Describe the bug Getting the message "ERROR 403: rate limit exceeded" from GET MODULE LIST, after only 3-4 requests.

To Reproduce Click "GET MODULE LIST" a few times in the GRAPEVNE interface. This only happens when using certain wifi, as observed before.

Expected behavior N/A

Screenshots

Screenshot 2024-02-16 at 11 28 39

Environment (please complete the following information):

jsbrittain commented 5 months ago

For context, this is a response from the github api to our request for the repository listing. Since we are not logged in to github when we make this request (through the grapevne app), the rate limit is severely hobbled (see here):

This leaves two viable options:

  1. Provide a facility to enter github authentication information into grapevne
  2. Provide a secondary route to acquire the respository listing (possibly as a failsafe mechanism)
jsbrittain commented 5 months ago

Since the github API is only used to return the folder structure of a repository (files are download using raw.githubusercontent.com), an alternative suggestion is to maintain a cache of modules on a separate branch / AWS-S3 bucket, etc. This file could parse a list of known repositories. While this is a reasonable workaround, it is not a fix as it would not cover non-listed repos.

jsbrittain commented 3 months ago

A workaround for this problem would be to clone the target repository onto the local machine and point grapevne towards that folder, instead of the remote repository.

jsbrittain commented 3 weeks ago

287 adds manifest support - GRAPEVNE will first look for a manifest.json file (essentially a file-map of the repository); if found it will download and continue to use this file for folder queries (e.g. when probing for multiple configuration files). Automatic manifest creation can be accomplished by CI (github actions) running on the target repository. I will make these available once they are fully automated.