As of 1.3 you can spawn custom applications via the Emperor.
Non-uWSGI Vassals should never daemonize, to maintain a link with the Emperor. If you want/need better integration with the Emperor, implement the Emperor protocol.
The protocol¶An environment variable UWSGI_EMPEROR_FD
is passed to every vassal, containing a file descriptor number.
import os has_emperor = os.environ.get('UWSGI_EMPEROR_FD') if has_emperor: print "I'm a vassal snake!"
Or in Perl,
my $has_emperor = $ENV{'UWSGI_EMPEROR_FD'} if ($has_emperor) { print "I am a vassal.\n" }
Or in C,
int emperor_fd = -1; char *has_emperor = getenv("UWSGI_EMPEROR_FD"); if (has_emperor) { emperor_fd = atoi(has_emperor); fprintf(stderr, "I am a vassal.\n"); }
From now you can receive (and send) messages from (and to) the Emperor over this file descriptor.
Messages are byte sized (0-255), and each number (byte) has a meaning.
0
Sent by the Emperor to stop a vassal
1
Sent by the Emperor to reload a vassal / sent by a vassal when it has been spawned
2
Sent by a vassal to ask the Emperor for configuration chunk
5
Sent by a vassal when it is ready to accept requests
17
Sent by a vassal after the first request to announce loyalty
22
Sent by a vassal to notify the Emperor of voluntary shutdown
26
Heartbeat sent by the vassal. After the first received heartbeat, the Emperor will expect more of them from the vassal.
30
Sent by the vassal to ask for Auto-scaling with Broodlord mode mode.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4