I'm using the following command (manually wrapped to multiple lines)
to start uWSGI for running a Perl application via PSGI:

    uwsgi --reaper --vacuum --single-interpreter --master --processes 1
          --http-modifier1 5 --plugins psgi
          --http 0.0.0.0:$VCAP_APP_PORT --psgi app.psgi

Communication to nginx is via a router that only talks HTTP, so I can't
use the native uwsgi protocol.  It works fine:

  *** Starting uWSGI 0.9.8.5 (64bit) on [Fri Oct 21 22:36:17 2011] ***
  compiled with version: 4.5.2 on 20 October 2011 23:09:29
  your memory page size is 4096 bytes
  spawned uWSGI http 1 (pid: 249)
  HTTP router/proxy bound on 0.0.0.0:3000
  uwsgi socket 0 bound to TCP address 127.0.0.1:48632 (port auto-assigned) fd 3
  initializing Perl 5.14.2 environment
  your server socket listen backlog is limited to 100 connections
  *** Operational MODE: single process ***
  Prototype mismatch: sub main::get: none vs ($) at app.pl line 4
  PSGI app (app.psgi) loaded at 0x1ee4490
  *** no app loaded. going in full dynamic mode ***
  spawned uWSGI master process (pid: 246)
  spawned uWSGI worker 1 (pid: 250, cores: 1)
  recv(): Success [plugins/http/http.c line 570]

I got some feedback (indirectly) from Roberto saying:

| 3) running the --http option will spawn an additional process doing
|    proxy from http to uwsgi. This is a waste of resources. You can use
|    --protocol=http --socket :port to let uWSGI natively speaks HTTP
|    (if you cannot use the uwsgi protocol directly)

So I changed the invocation to (only 3rd line changed):

    uwsgi --reaper --vacuum --single-interpreter --master --processes 1
          --http-modifier1 5 --plugins psgi
          --protocol=http --socket=0.0.0.0:$VCAP_APP_PORT --psgi app.psgi

This no longer works:

  *** Starting uWSGI 0.9.8.5 (64bit) on [Fri Oct 21 22:37:27 2011] ***
  compiled with version: 4.5.2 on 20 October 2011 23:09:29
  your memory page size is 4096 bytes
  uwsgi socket 0 bound to TCP address 0.0.0.0:3000 fd 3
  initializing Perl 5.14.2 environment
  your server socket listen backlog is limited to 100 connections
  *** Operational MODE: single process ***
  Prototype mismatch: sub main::get: none vs ($) at app.pl line 4
  PSGI app (app.psgi) loaded at 0x2d1a4f0
  *** no app loaded. going in full dynamic mode ***
  spawned uWSGI master process (pid: 246)
  spawned uWSGI worker 1 (pid: 249, cores: 1)
  recv(): Success [proto/http.c line 233]
  error parsing request

Is this a bug, or is this simply not supposed to work for PSGI?

It is also not clear to me if I should have used "--http-modifier1 5"
with the "--protocol=http" option, or not.  It doesn't work either way
right now though.

Cheers,
-Jan


_______________________________________________
uWSGI mailing list
[email protected]
http://lists.unbit.it/cgi-bin/mailman/listinfo/uwsgi

Reply via email to