Skip to main content

kong-python-pluginserver

PyPI version

Plugin server and PDK (Plugin Development Kit) for Python language support in Kong.

Requires Kong >= 2.3.0.

Documentation

See in Kong Docs

Install the plugin server

pip3 install kong-pdk

Usage

usage: kong-python-pluginserver [-h] [-p prefix] [-v] [--version] [--socket-name SOCKET_NAME] [--listen-queue-size LISTEN_QUEUE_SIZE]
                         [--no-lua-style] [-m | -g] -d directory [--dump-plugin-info name] [--dump-all-plugins]

Kong Python Plugin Server.

optional arguments:
  -h, --help            show this help message and exit
  -p prefix, --kong-prefix prefix, -kong-prefix prefix
                        unix domain socket path to listen (default: /usr/local/kong/)
  -v, --verbose         turn on verbose logging (default: 1)
  --version, -version   show program's version number and exit
  --socket-name SOCKET_NAME
                        socket name to listen on (default: python_pluginserver.sock)
  --listen-queue-size LISTEN_QUEUE_SIZE
                        socket listen queue size (default: 4096)
  --no-lua-style        turn off Lua-style "data, err" return values for PDK functions and throw exception instead (default: False)
  -m, --multiprocessing
                        enable multiprocessing (default: False)
  -g, --gevent          enable gevent (default: False)
  -d directory, --plugins-directory directory, -plugins-directory directory
                        plugins directory
  --dump-plugin-info name, -dump-plugin-info name
                        dump specific plugin info into stdout
  --dump-all-plugins, -dump-all-plugins
                        dump all plugins info into stdout

PDK API reference

The PDK (plugin developemet kit) API document can be viewed here.

Reference is generated by Sphinx under doc folder and published to the gh-pages branch. To generate updated docs, use:

git worktree add docs/build/html gh-pages
cd docs
make deps && make html

Deprecation Notice

In next major release of Kong Python PDK, return values will default to use Python style error handling instead of Lua style. The new style API can be turned on now with --no-lua-style.

# old lua-style PDK API
host, err = kong.request.get_header("host")
if err:
    pass # error handling

# new python-style PDK API
try:
    host = kong.request.get_header("host")
    # no err in return, instead they are thrown if any
except Exception as ex:
    pass # error handling

TODO

  • Tests
  • Hot reload

Unreleased

0.3.6 - 2023-06-27

bug fixes

  • add missing file enterprise_edition e8d7c86

0.3.5 - 2023-06-20

bug fixes

  • delete message queue when they are not needed any more (#122) ffeb2f2

0.3.4 - 2023-06-20

bug fixes

  • serialize error and disable strict_map_key to allow (#117) 25db61c

0.3.2 - 2022-11-08

bug fixes

  • add version field in PluginInfo rpc (#79) 132f31d

0.3.1 - 2022-06-13

bug fixes

  • plugin closure syntax correction (#64) 920cc26
  • removing upper() to allow matching of attributes (#69) 1997a6c
  • #50: return type of get_raw_bodys should be binary string 59ab367
  • catch error from PDK methods (#53) 7f82677
  • #50: return type should support binary string fdb2c9b

0.3.0 - 2022-02-17

bug fixes

  • add option to use python style error handling to be consistent with style headers 39a75bd
  • include correct instances list in get_status 56d7ad7
  • exit immediately from kong.response.{error,exit} ba3d5fa

0.2.7 - 2021-08-04

bug fixes

  • correctly pass schema in embedded server 099a498
  • no longer normalize hyphens in socket name in embedded server to keep consistent with what Kong expects 20c01da

0.2.6 - 2021-07-19

bug fixes

  • listener to use msgpack.Unpacker iterrator bed56c4

0.2.5 - 2021-06-24

bug fixes

  • listener to use msgpack.Unpacker iterrator bed56c4
  • use .py file for type hint (#13) 1bf3820

0.2.4 - 2021-06-17

bug fixes

  • check correct flags existence in dedicated server (#10) b18dd45
  • set larger listen queue size (#9) a3eb340

0.2.3 - 2021-05-13

bug fixes

  • display defaults on cli and print PluginServerException to warning 13991ec
  • skip running cleanup timer e10c098
  • standarlize error on instance not found 0dfc94f

features

0.2.2 - 2021-03-29

bug fixes

  • correct license in setup.py (#3) b257c98
  • threading mode pipe and styles 6f73ac7
  • enable plugin server without gevent mode a29c4d7

features

0.2.1 - 2021-02-24

bug fixes

  • disable gevent in multiprocessing and make it optional 5b6fb68
  • chmod+x on examples 1f5905d

features

0.2.0 - 2021-02-22

bug fixes

  • sync with Kong 2.3 update d42de7e

code refactoring

  • rename kong_pluginserver to kong_pdk e802627

features

  • exit server if parent is dead 0ee2183
  • embed server in plugin af55deb

0.1.2 - 2020-02-21

bug fixes

0.1.1 - 2020-02-20

0.1.0 - 2020-01-03

Metadata

Release files for kong-pdk 0.36

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for kong-pdk 0.36
File Size Uploaded Provenance Actions
kong_pdk-0.36.tar.gz 45.3 kB Without provenance Details for kong_pdk-0.36.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for kong-pdk 0.36
File Interpreter ABI Platform Actions
kong_pdk-0.36-py3-none-any.whl Python 3 none any Details for kong_pdk-0.36-py3-none-any.whl

Total release size: 99.9 kB

Release files / kong_pdk-0.36.tar.gz

Download URL kong_pdk-0.36.tar.gz
Size 45.3 kB
Tags Source
SHA-256 checksum
How to use checksums
45e7a2b1914fc7b452876b52f938f9406fbf5d0e7ef594f4371eaa2f16bfff08
BLAKE2b-256 checksum
How to use checksums
033f4deb10b341bf5551422493fce3c646c2cb8d58e4d218f2974d32f1343266
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.10.12

Release files / kong_pdk-0.36-py3-none-any.whl

Download URL kong_pdk-0.36-py3-none-any.whl
Size 54.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c4a67cf6fbe89a9b6d1e57f21e8f09dba0356011d51ca076ee0c70f05c738a94
BLAKE2b-256 checksum
How to use checksums
f64a1b33c8e4675996db97d3961c257350c8ad74cb727a91d1179b666239ba50
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.10.12

Security for kong-pdk 0.36

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page