pypi-mirrors icon indicating copy to clipboard operation
pypi-mirrors copied to clipboard

pypi mirror status

pypi-mirrors

Very simple tool that pings the PyPI mirrors and tells us when they were updated last.

I threw this together very quickly as a proof of concept feel free to fork, and send pull requests.

Docker Image

https://hub.docker.com/r/ibigbug/pypi-mirrors/

Config

Redis

It requires redis in order to cache some of the data. For local development it is assuming it to be running
at localhost:6379 db:1 and no password. see ``config.py`` for more info.

GeoIP

In order to get the IP address geolocation lookup, you need to sign up for an account from http://ipinfodb.com/register.php . If you don't have the env variable set, you will not have access to the geo location information. set IPLOC_API_KEY with the API key they give you.

Email & Twitter

Pass the corresponding environment variables to enable email & twitter notifications.


Environment variables

env variables::

docker run
-e 'CACHE_REDIS_HOST=localhost'
-e 'CACHE_REDIS_PORT=6379'
-e 'IPLOC_API_KEY='
-e 'TWITTER_CONSUMER_KEY='
-e 'TWITTER_CONSUMER_SECRET='
-e 'TWITTER_ACCESS_KEY='
-e 'TWITTER_ACCESS_SECRET='
-e 'EMAIL_HOST='
-e 'EMAIL_PORT='
-e 'EMAIL_USER='
-e 'EMAIL_PASSWORD='
-e 'EMAIL_FROM='
-e 'EMAIL_TO='
-e 'EMAIL_BCC='
-e 'EMAIL_TO_ADMIN='
-e 'SENTRY_DSN='
ibigbug/pypi-mirrors
uwsgi -w wsgi --logto=/var/log/uwsgi/uwsgi.log --chdir=/src/ --chmod-socket=666

How it works

The pypi_mirrors.py script runs via a cron job and puts data into redis. There is one webpage that pull the data from redis and displays it. There is a daily cron job that runs and sends out notifications if the mirrors are out of date.

Demo

http://www.pypi-mirrors.org

How to help

Pick one of the things on the TODO list and implement it and send a pull request.

Running locally

Make sure redis is running

  1. Collecting Data::

    $ python pypi_mirrors.py

  2. Running web server::

    $ python app.py

    connect to http://localhost:5000 in browser

TODO:

  • [ ] Create a setup.py and add to PyPI
  • [ ] Add better documentation
  • [x] Make Docker Image