views:

45

answers:

1

I recently got my first app to work in uWSGI with Cherokee. I used the following code taken from the uWSGI docs:

def application(environ, start_response):
  start_response('200 OK', [('Content-Type', 'text/plain')])
  yield 'Hello World\n'

The page correctly reads Hello World. When I change that text to New Thing and refresh, nothing changes. What am I forgetting?

What I've tried:

  1. clearing browser history and cache
  2. stopping and starting Cherokee


Edit: To clarify, I change Hello World to New Thing in the Python code. Then I stop Cherokee, refresh, and I obviously see an error message. I restart Cherokee, refresh, and I see Hello World.

+1  A: 

So the way this works is that Cherokee is managing a running uwsgi instance in the back ground for you. What I've noticed so far, and I've not finished looking at, is that if you shut down Cherokee it doesn't seem to also shut down running uwsgi instances.

Try this:

sudo service cherokee start
ps aux | grep uwsgi 
# you should see nothing from this ps command

# now hit your web app
sudo service cherokee stop
ps aux | grep uwsgi
# you should see the instance of uwsgi that cherokee started

So your app code is actually run via uwsgi and Cherokee is more like a proxy server. In order to update the app code you need to send the HUP signal to uwsgi, not Cherkee.

sudo killall -HUP uwsgi

That should cause uwsgi to update to your app changes regardless of Cherokee.

Rick
Perfect! Thanks. (Ubuntu users: `killall` is in the package `psmisc`.)
Steve