mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-22 12:30:07 +00:00
bdd034947c
As per https://docs.python.org/3/c-api/none.html, None has to be treated exactly like other objects for reference counting. So, when we use it, we need to INCREF and when we are done, DECREF This patch must be backported as far as 2.0. |
||
---|---|---|
.. | ||
Makefile | ||
print_r.lua | ||
ps_lua.c | ||
ps_lua.lua | ||
ps_python.c | ||
ps_python.h | ||
ps_python.py | ||
README | ||
spoa-server.conf | ||
spoa-server.spoe.conf | ||
spoa.c | ||
spoa.h |
Multi script langyage Stream Processing Offload Agent ----------------------------------------------------- This agent receive SPOP message and process it with script languages. The language register callback with a message. Each callback receive the list of arguments with types according with the language capabilities. The callback write variables which are sent as response when the processing is done. Prerequirement ---------------- You have to install the development packages, either from the distribution repositories or from the source. CentOS/RHEL: sudo yum install python3-devel The current minimal python version compatible with this library is 2.7. It's recommended to use python version 3 where possible due to python 2 deprecation. Compilation --------------- The server currently supports Lua and Python. Type "make" with the options: USE_LUA=1 and/or USE_PYTHON=1. You can add LUA_INC=.. LUA_LIB=.. to the make command to set the paths to the lua header files and lua libraries. Similarly, you can add PYTHON_INC=.. PYTHON_LIB=.. to the make command to set the paths to the python header files and python libraries. By default, it will try to compile by detecting the default python 3 parameters. It will fall back to python 2 if python 3 is not available. Start the service --------------------- After you have compiled it, to start the service, you just need to use "spoa" binary: $> ./spoa -h Usage: ./spoa [-h] [-d] [-p <port>] [-n <num-workers>] -h Print this message -d Enable the debug mode -p <port> Specify the port to listen on (default: 12345) -n <num-workers> Specify the number of workers (default: 5) -f <file> Load script according with the supported languages The file processor is recognized using the extension. .lua or .luac for lua and .py for python. Start example: $> ./spoa -d -f ps_lua.lua $> ./spoa -d -f ps_python.py Configure ------------- Sample configuration are join to this server: spoa-server.conf : The HAProxy configuration file using SPOE server spoa-server.spoe.conf : The SPOP description file used by HAProxy ps_lua.lua : Processing Lua example ps_python.py : Processing Python example Considerations ------------------ This server is a beta version. It works fine, but some improvement will be welcome: Main process: * Improve log management: Today the log are sent on stdout. * Improve process management: The dead process are ignored. * Implement systemd integration. * Implement threads: It would be fine to implement thread working. Shared memory is welcome for managing database connection pool and something like that. * Add PHP support and some other languages. Python: * Improve reporting: Catch python error message and report it in the right place. Today the error are dumped on stdout. How using syslog for logging stack traces ? Maybe some other things...