Skip to content

gustavogk/async-repo-cloner

Repository files navigation

GustavoAssunção Languages lastcommit Email

Made with 💖 by Gustavo Assunção.

async-repo-cloner

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.

📌 Contents

⚙️ System Diagram

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]
Loading

🚀 Technologies

This project was made using the follow technologies:

💻 How to run

# 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

🐛 Issues

Create a new issue report, it will be an honor to be able to help you solve and further improve our application.

✨ Contributing

  • 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.

📄 License

This project is under the BSD 2-Clause License. Made with 💖 by Gustavo Assunção.

Thank you! 🌠

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages