O "async-repo-cloner" é um componente que gerencia a clonagem assíncrona de vários repositórios do GitHub, visando a recuperação de informações e dados históricos para análise. Ele funciona através de um esquema de produtor/consumidor, onde o produtor solicita a clonagem dos repositórios e enfileira os pedidos em um servidor de mensageria (RabbitMQ). Os clientes (consumidores) pegam um pedido da fila e executam a clonagem do repositório utilizando threads em python, permitindo a clonagem simultânea de múltiplos repositórios sem sobrecarregar o sistema.
flowchart TB
A[Producer main.py] -->|send messages to queue| B[RabbitMQ Server]
B --> |consume messages from queue| C[Consumer async-repo-cloner.py]
C -->|create Process 1 to clone a repository | D[Process 1: Clone Repository 1]
C -->|create Process 2 to clone a repository | E[Process 2: Clone Repository 2]
C -->|create Process 3 to clone a repository | F[Process 3: Clone Repository 3]
This project was made using the follow technologies:
# Clone Repository
$ git clone https://github.com/gustavogk/async-repo-cloner
# Create virtual environment
$ python3 -m venv nome-do-ambiente
# Access the virtual environment
$ .\nome-do-ambiente\Scripts\activate
# Install Dependencies
$ pip install -r requirements.txt
# Run Aplication
$ python3 .\async-repo-cloner.py
# Run RabbitMQ with docker, just run the following command line:
$ docker run --rm -p 5672:5672 -p 8080:15672 rabbitmq:3-management
# Test send repositories to be cloned through the main.py script
$ python3 .\main.py
Create a new issue report, it will be an honor to be able to help you solve and further improve our application.
- Fork this repository;
- Create a branch with your feature:
git checkout -b my-feature
; - Commit your changes:
git commit -m 'feat: My new feature'
; - Push to your branch:
git push origin my-feature
.
This project is under the BSD 2-Clause License. Made with 💖 by Gustavo Assunção.
Thank you! 🌠