Havarti

Software Screenshot:
Havarti
Software Details:
Version: 0.4
Upload Date: 20 Feb 15
Developer: Jake Basile
Distribution Type: Freeware
Downloads: 7

Rating: nan/5 (Total Votes: 0)

havarti is a quaint cheese shop that plays nicely in The Cloud.

Installation

Havarti is a Flask app with a Celery downloader. Anything that can handle that can run it, but here are some suggestions on how to run it.

Heroku

The default way of hosting Havarti is with Heroku, MongoHQ, and S3.

 git clone git@github.com:jakebasile/Havarti.git && cd havarti
 heroku apps:create --stack cedar
 heroku addons:add mongohq:free
 heroku config:add STORAGE=s3storage \
 AWS_ACCOUNT_KEY_ID=< Your AWS Key ID > \
 AWS_SECRET_KEY_ID=< Your AWS Secret > \
 MONGO_KEY=MONGOHQ_URL
 git push heroku master
 heroku scale web=1 downloader=1


You can also use Rackspace Cloud Files to store the cache by changing the config line to:

 heroku config:add STORAGE=rackspacestorage \
 RACKSPACE_USERNAME=< Your Rackspace Username > \
 RACKSPACE_KEY=< Your Rackspace API Key > \
 MONGO_KEY=MONGOHQ_URL


Local

Maybe you don't want to be a cool cat and run Havarti on Heroku. You want to run it locally. Here's one way to do it. First, install Havarti somewhere:

 virtualenv havarti-install
 cd havarti-install
 source bin/activate
 pip install havarti gunicorn supervisor


This will install Havarti, Gunicorn, and Supervisor to run it all. Now, make a supervisord.conf file in this directory:

[unix_http_server]
file=supervisord.sock
chmod=0777

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisord]
logfile=logs/supervisor.txt
loglevel=info
pidfile=supervisord.pid

[supervisorctl]
serverurl=unix://supervisord.sock

[program:mongodb]
command=mongod
stdout_logfile=logs/mongodb.txt
stderr_logfile=logs/mongodb-err.txt
priority=1

[program:havarti]
command=bin/gunicorn -w 3 --preload -b 0.0.0.0:80 havarti:app
stdout_logfile=logs/havarti.txt
stderr_logfile=logs/havarti-err.txt
environment=STORAGE=localstorage
priority=2

[program:celery]
command=bin/celery --app=havarti worker -l info
stdout_logfile=logs/celery.txt
stderr_logfile=logs/celery-err.txt
environment=STORAGE=localstorage
priority=3


This assumes that you have MongoDB installed previously. Then, again from this directory, just create the directories needed and start Supervisor!

 mkdir logs
 sudo mkdir -p /data/db
 sudo bin/supervisord


You can now control the processes through supervisorctl. Check out Supervisor's documentation for more info on it.

Usage

Havarti acts as a proxy for PyPI, intercepting requests for packages. When it recieves a package request, it follows a simple decision tree:

- Is package/version cached?
- Yes: serve cached package.
- No: Mark package for caching, serve PyPI package.

Havarti checks for new versions with every request, so you are always able to get the very newest version of whatever package you require (and then the new version will be cached from then on).

Downloading

Just substitute your Havarti Index URL when using Pip. Your Havarti Index URL is wherever you hosted Havarti + '/i/', e.g. 'http://random-phrase-5000.herokuapp.com/i/'.

 pip install -i http://random-phrase-5000.herokuapp.com/i/ reap

You can add this to your pip.conf to save some keystrokes.

Uploading

You can also upload packages to Havarti directly. These will not be pushed to PyPI, but are available to anyone with the Havarti url. To upload, just use your Havarti Upload URL with setup.py. Your Havarti Upload URL is wherever you hosted Havarti + '/u/', e.g. 'http://random-phrase-5000.herokuapp.com/u/'.

 python setup.py sdist upload -r http://random-phrase-5000.herokuapp.com/u/

You can also set this up in a .pypirc file to save even more keystrokes.

Requirements:

  • Python

Other Software of Developer Jake Basile

dotback
dotback

20 Feb 15

reap
reap

14 Apr 15

Comments to Havarti

Comments not found
Add Comment
Turn on images!