pypi mirror status
Python HTML
Pull request Compare This branch is 89 commits ahead of kencochrane:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.



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



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 for more info.


In order to get the IP address geolocation lookup, you need to sign up for an account from . 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=<value>' \
    -e 'TWITTER_CONSUMER_KEY=<value>' \
    -e 'TWITTER_CONSUMER_SECRET=<value>' \
    -e 'TWITTER_ACCESS_KEY=<value>' \
    -e 'TWITTER_ACCESS_SECRET=<value>' \
    -e 'EMAIL_HOST=<value>' \
    -e 'EMAIL_PORT=<value>' \
    -e 'EMAIL_USER=<value>' \
    -e 'EMAIL_PASSWORD=<value>' \
    -e 'EMAIL_FROM=<value>' \
    -e 'EMAIL_TO=<value>' \
    -e 'EMAIL_BCC=<value>' \
    -e 'EMAIL_TO_ADMIN=<value>'\
    -e 'SENTRY_DSN=<value>'\
    ibigbug/pypi-mirrors \
    uwsgi  -w wsgi --logto=/var/log/uwsgi/uwsgi.log --chdir=/src/ --chmod-socket=666

How it works

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


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
  2. Running web server:

    $ python
    # connect to http://localhost:5000 in browser


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