User Tools

Site Tools


programming:python:py-prefork-server

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
programming:python:py-prefork-server [2015/01/03 05:50] – [The __init__ Signature] jayprogramming:python:py-prefork-server [2023/11/10 20:06] (current) – [Donations] jay
Line 21: Line 21:
 **NOTE:** The RPMs are **not** guaranteed to be the latest versions.  Check [[https://github.com/crustymonkey/py-prefork-server|Github]] to find out what the latest version is.  That said, I will try and keep these up to date. **NOTE:** The RPMs are **not** guaranteed to be the latest versions.  Check [[https://github.com/crustymonkey/py-prefork-server|Github]] to find out what the latest version is.  That said, I will try and keep these up to date.
  
-{{:programming:python:py-prefork-server-0.1.2-1.noarch.rpm|py-prefork-server-0.1.4-1.noarch.rpm}} \\ +{{:programming:python:py-prefork-server-0.1.2-1.noarch.rpm|py-prefork-server-0.4.0-1.noarch.rpm}} \\ 
-{{:programming:python:py-prefork-server-0.1.2-1.src.rpm|py-prefork-server-0.1.4-1.src.rpm}} +{{:programming:python:py-prefork-server-0.1.2-1.src.rpm|py-prefork-server-0.4.0-1.src.rpm}}
-===== Donations ===== +
-By no means should anyone feel they //have// to donate.  However, if you've used this stuff to save some time, prevent head shaped holes in the wall, raise your children or you just think this is awesome and want to contribute to my [[http://www.surlybrewing.com/|Surly]] fund (that stuff isn't cheap, but it's soooooo good), you can click the [[http://paypal.com|Paypal]] donate button below and toss me a couple of dollars.  I've heard from others who have donated that they were visited by flying monkeys that spoke Icelandic, and were subsequently showered with fantastic gifts from said monkeys.  I don't know if this is true, or if drug use was involved, but it still sounds pretty awesome.+
  
-<html> 
-<form action="https://www.paypal.com/cgi-bin/webscr" method="post"> 
-<input type="hidden" name="cmd" value="_s-xclick"> 
-<input type="hidden" name="hosted_button_id" value="83ENX2ZV8E694"> 
-<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!"> 
-<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1"> 
-</form> 
-</html> 
 ===== Issues and Feature Requests ===== ===== Issues and Feature Requests =====
 Please use the bug tracker built in to [[https://github.com/crustymonkey/py-prefork-server|Github]] for all bug reports and feature requests Please use the bug tracker built in to [[https://github.com/crustymonkey/py-prefork-server|Github]] for all bug reports and feature requests
Line 87: Line 77:
 == initialize(self) == == initialize(self) ==
 Rather than reimplementing __init__, which you can do instead, you can just override this and setup variables and such that you need to set up.  This is the recommended approach.  Note that this is only called once, when the class is initialized.  This is **NOT** called on each new connection.  Use ''post_accept()'' for that purpose. Rather than reimplementing __init__, which you can do instead, you can just override this and setup variables and such that you need to set up.  This is the recommended approach.  Note that this is only called once, when the class is initialized.  This is **NOT** called on each new connection.  Use ''post_accept()'' for that purpose.
 +
 +== pre_bind(self) ==
 +This hook is called before the main socket is created and bound to the ip:port.  This is similar to the ''initialize()'' hook in the child class.  You can use this to set up global variables, etc.  Note that this will **only** be called if you are using reuse_port as the socket will be bound in the child process.
 +
 +== post_bind(self) ==
 +As you might have guessed, this is called right after the ''accept()'' socket has been created and bound.  Note that this will **only** be called if you are using reuse_port as the socket will be bound in the child process.
  
 == post_accept(self) == == post_accept(self) ==
Line 102: Line 98:
 Remember, if this is a udp server, self.conn will be a string with the actual packet payload.  If you have a udp server, and you wish to respond, you can use the resp_to() method built into BaseChild.  It accepts the message responds to the current udp client. Remember, if this is a udp server, self.conn will be a string with the actual packet payload.  If you have a udp server, and you wish to respond, you can use the resp_to() method built into BaseChild.  It accepts the message responds to the current udp client.
  
-<source python>+<code python>
 def process_request(self): def process_request(self):
     data = self.conn     data = self.conn
     self.resp_to('Received data: %s\n' % data)     self.resp_to('Received data: %s\n' % data)
-</source>+</code>
  
 == post_process_request(self) == == post_process_request(self) ==
Line 148: Line 144:
 Here they are with a brief description. Here they are with a brief description.
  
-== preBind(self) == +== pre_bind(self) == 
-This hook is called before the main socket is created and bound to the ip:port.  This is similar to the ''initialize()'' hook in the child class.  You can use this to set up global variables, etc.+This hook is called before the main socket is created and bound to the ip:port.  This is similar to the ''initialize()'' hook in the child class.  You can use this to set up global variables, etc.  Note that this will **not** be called if you are using reuse_port as the socket will be bound in the child process.
  
-== postBind(self) == +== post_bind(self) == 
-As you might have guessed, this is called right after the ''accept()'' socket has been created and bound.+As you might have guessed, this is called right after the ''accept()'' socket has been created and bound.  Note that this will **not** be called if you are using reuse_port as the socket will be bound in the child process.
  
-== preSignalSetup(self) ==+== pre_signal_setup(self) ==
 This is called before the signal handlers are set up This is called before the signal handlers are set up
  
-== postSignalSetup(self) ==+== post_signal_setup(self) ==
 This is called after the signal handlers have been set.  You can override the default signal handlers if you like.  More on that below. This is called after the signal handlers have been set.  You can override the default signal handlers if you like.  More on that below.
  
-== preInitChildren(self) ==+== pre_init_children(self) ==
 This is called before the child processes are initialized. This is called before the child processes are initialized.
  
-== postInitChildren(self) ==+== post_init_children(self) ==
 This is called after the child processes are initialized. This is called after the child processes are initialized.
  
-== preLoop(self) ==+== pre_loop(self) ==
 This is the last hook before the main server loop takes over. Any last minute setup items you wish to do should be done here. This is the last hook before the main server loop takes over. Any last minute setup items you wish to do should be done here.
  
-== preServerClose(self) ==+== pre_server_close(self) ==
 This is called before the server shuts down.  Any cleanup you wish to take care of before termination should be done here. This is called before the server shuts down.  Any cleanup you wish to take care of before termination should be done here.
  
-== hupHandler(self , frame , num) ==+== hup_handler(self , frame , num) ==
 This handles a SIGHUP.  If you have a config for your server, you could reload that here.  By default, this just ignores the signal. This handles a SIGHUP.  If you have a config for your server, you could reload that here.  By default, this just ignores the signal.
  
-== intHandler(self , frame , num) ==+== int_handler(self , frame , num) ==
 This handles a SIGINT.  The default is set an internal "stop" event to gracefully shutdown.  If you override this, call the ''super()'' so the graceful shutdown happens. This handles a SIGINT.  The default is set an internal "stop" event to gracefully shutdown.  If you override this, call the ''super()'' so the graceful shutdown happens.
  
-== termHandler(self , frame , num) ==+== term_handler(self , frame , num) ==
 By default, this does exactly the same thing as ''intHandler'' with a SIGTERM. By default, this does exactly the same thing as ''intHandler'' with a SIGTERM.
  
 ===== Example ===== ===== Example =====
 There is a full, working example in the distributions ''examples'' directory. There is a full, working example in the distributions ''examples'' directory.
programming/python/py-prefork-server.1420264230.txt.gz · Last modified: 2015/01/03 05:50 by jay