Giter Site home page Giter Site logo

jgarte / python_portpicker Goto Github PK

View Code? Open in Web Editor NEW

This project forked from google/python_portpicker

0.0 1.0 0.0 84 KB

A module to find available network ports for testing.

Home Page: https://pypi.python.org/pypi/portpicker

License: Apache License 2.0

Python 99.26% Shell 0.74%

python_portpicker's Introduction

Python portpicker module

PyPI version GH Action Status Travis CI org Status

This module is useful for finding unused network ports on a host. If you need legacy Python 2 support, use the 1.3.x releases.

This module provides a pure Python pick_unused_port() function. It can also be called via the command line for use in shell scripts.

If your code can accept a bound TCP socket rather than a port number consider using socket.bind(('localhost', 0)) to bind atomically to an available port rather than using this library at all.

There is a race condition between picking a port and your application code binding to it. The use of a port server by all of your test code to avoid that problem is recommended on loaded test hosts running many tests at a time.

Unless you are using a port server, subsequent calls to pick_unused_port() to obtain an additional port are not guaranteed to return a unique port.

What is the optional port server?

A port server is intended to be run as a daemon, for use by all processes running on the host. It coordinates uses of network ports by anything using a portpicker library. If you are using hosts as part of a test automation cluster, each one should run a port server as a daemon. You should set the PORTSERVER_ADDRESS=@unittest-portserver environment variable on all of your test runners so that portpicker makes use of it.

A sample port server is included. This portserver implementation works but has not spent time in production. If you use it with good results please report back so that this statement can be updated to reflect that. :)

A port server listens on a unix socket, reads a pid from a new connection, tests the ports it is managing and replies with a port assignment port for that pid. A port is only reclaimed for potential reassignment to another process after the process it was originally assigned to has died. Processes that need multiple ports can simply issue multiple requests and are guaranteed they will each be unique.

Typical usage:

import portpicker
test_port = portpicker.pick_unused_port()

Or from the command line:

TEST_PORT=`/path/to/portpicker.py $$`

Or, if portpicker is installed as a library on the system Python interpreter:

TEST_PORT=`python3 -m portpicker $$`

DISCLAIMER

This is not an official Google product (experimental or otherwise), it is just code that happens to be owned by Google.

python_portpicker's People

Contributors

gpshead avatar nehaljwani avatar nicdumz avatar patricevignola avatar peap avatar piperchester avatar tewalds avatar ujjwalsh avatar yhg1s avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.