diff options
author | CoprDistGit <infra@openeuler.org> | 2023-04-11 17:56:26 +0000 |
---|---|---|
committer | CoprDistGit <infra@openeuler.org> | 2023-04-11 17:56:26 +0000 |
commit | bd5dfa6c66d9795a567cb1914ec69f2bcdb85382 (patch) | |
tree | 223ec44e5af1a9dd22fc38d18974bce5f07a36b1 | |
parent | 84f89da8532e32cf81e72cd6324dcf18ab27bb25 (diff) |
automatic import of python-ephemeral-port-reserve
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-ephemeral-port-reserve.spec | 192 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 194 insertions, 0 deletions
@@ -0,0 +1 @@ +/ephemeral_port_reserve-1.1.4.tar.gz diff --git a/python-ephemeral-port-reserve.spec b/python-ephemeral-port-reserve.spec new file mode 100644 index 0000000..55346bc --- /dev/null +++ b/python-ephemeral-port-reserve.spec @@ -0,0 +1,192 @@ +%global _empty_manifest_terminate_build 0 +Name: python-ephemeral-port-reserve +Version: 1.1.4 +Release: 1 +Summary: Bind to an ephemeral port, force it into the TIME_WAIT state, and unbind it. +License: MIT +URL: https://github.com/Yelp/ephemeral-port-reserve/ +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/ef/93/3f0b75f75f94227f67ccfe86f989415e40ac054dd67b55dfac7abdc0a2d2/ephemeral_port_reserve-1.1.4.tar.gz +BuildArch: noarch + + +%description +# `ephemeral-port-reserve` +Sometimes you need a networked program to bind to a port that can't be hard-coded. +Generally this is when you want to run several of them in parallel; if they all +bind to port 8080, only one of them can succeed. + +The usual solution is the "port 0 trick". If you bind to port 0, your kernel will +find some arbitrary high-numbered port that's unused and bind to that. Afterward +you can query the actual port that was bound to if you need to use the port number +elsewhere. However, there are cases where the port 0 trick won't work. For example, +mysqld takes port 0 to mean "the port configured in my.cnf". Docker can bind your +containers to port 0, but uses its own implementation to find a free port which +races and fails in the face of parallelism. + +`ephemeral-port-reserve` provides an implementation of the port 0 trick which +is reliable and race-free. You can use it like so: + +```!bash +PORT="$(ephemeral-port-reserve)" +docker run -p 127.0.0.1:$PORT:5000 registry:2 +``` + + +`ephemeral-port-reserve` is a utility to bind to an ephemeral port, force it into +the `TIME_WAIT` state, and unbind it. + +This means that further ephemeral port alloctions won't pick this "reserved" port, +but subprocesses can still bind to it explicitly, given that they use `SO_REUSEADDR`. +By default on linux you have a grace period of 60 seconds to reuse this port. +To check your own particular value: + +```!bash +$ cat /proc/sys/net/ipv4/tcp_fin_timeout +60 +``` + +**NOTE:** By default, the port returned is *specifically* for `localhost`, aka `127.0.0.1`. +If you bind instead to `0.0.0.0`, you may encounter a port conflict. If you need to +bind to a non-localhost IP, you can pass it as the first argument. + + + + +%package -n python3-ephemeral-port-reserve +Summary: Bind to an ephemeral port, force it into the TIME_WAIT state, and unbind it. +Provides: python-ephemeral-port-reserve +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-ephemeral-port-reserve +# `ephemeral-port-reserve` +Sometimes you need a networked program to bind to a port that can't be hard-coded. +Generally this is when you want to run several of them in parallel; if they all +bind to port 8080, only one of them can succeed. + +The usual solution is the "port 0 trick". If you bind to port 0, your kernel will +find some arbitrary high-numbered port that's unused and bind to that. Afterward +you can query the actual port that was bound to if you need to use the port number +elsewhere. However, there are cases where the port 0 trick won't work. For example, +mysqld takes port 0 to mean "the port configured in my.cnf". Docker can bind your +containers to port 0, but uses its own implementation to find a free port which +races and fails in the face of parallelism. + +`ephemeral-port-reserve` provides an implementation of the port 0 trick which +is reliable and race-free. You can use it like so: + +```!bash +PORT="$(ephemeral-port-reserve)" +docker run -p 127.0.0.1:$PORT:5000 registry:2 +``` + + +`ephemeral-port-reserve` is a utility to bind to an ephemeral port, force it into +the `TIME_WAIT` state, and unbind it. + +This means that further ephemeral port alloctions won't pick this "reserved" port, +but subprocesses can still bind to it explicitly, given that they use `SO_REUSEADDR`. +By default on linux you have a grace period of 60 seconds to reuse this port. +To check your own particular value: + +```!bash +$ cat /proc/sys/net/ipv4/tcp_fin_timeout +60 +``` + +**NOTE:** By default, the port returned is *specifically* for `localhost`, aka `127.0.0.1`. +If you bind instead to `0.0.0.0`, you may encounter a port conflict. If you need to +bind to a non-localhost IP, you can pass it as the first argument. + + + + +%package help +Summary: Development documents and examples for ephemeral-port-reserve +Provides: python3-ephemeral-port-reserve-doc +%description help +# `ephemeral-port-reserve` +Sometimes you need a networked program to bind to a port that can't be hard-coded. +Generally this is when you want to run several of them in parallel; if they all +bind to port 8080, only one of them can succeed. + +The usual solution is the "port 0 trick". If you bind to port 0, your kernel will +find some arbitrary high-numbered port that's unused and bind to that. Afterward +you can query the actual port that was bound to if you need to use the port number +elsewhere. However, there are cases where the port 0 trick won't work. For example, +mysqld takes port 0 to mean "the port configured in my.cnf". Docker can bind your +containers to port 0, but uses its own implementation to find a free port which +races and fails in the face of parallelism. + +`ephemeral-port-reserve` provides an implementation of the port 0 trick which +is reliable and race-free. You can use it like so: + +```!bash +PORT="$(ephemeral-port-reserve)" +docker run -p 127.0.0.1:$PORT:5000 registry:2 +``` + + +`ephemeral-port-reserve` is a utility to bind to an ephemeral port, force it into +the `TIME_WAIT` state, and unbind it. + +This means that further ephemeral port alloctions won't pick this "reserved" port, +but subprocesses can still bind to it explicitly, given that they use `SO_REUSEADDR`. +By default on linux you have a grace period of 60 seconds to reuse this port. +To check your own particular value: + +```!bash +$ cat /proc/sys/net/ipv4/tcp_fin_timeout +60 +``` + +**NOTE:** By default, the port returned is *specifically* for `localhost`, aka `127.0.0.1`. +If you bind instead to `0.0.0.0`, you may encounter a port conflict. If you need to +bind to a non-localhost IP, you can pass it as the first argument. + + + + +%prep +%autosetup -n ephemeral-port-reserve-1.1.4 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-ephemeral-port-reserve -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Tue Apr 11 2023 Python_Bot <Python_Bot@openeuler.org> - 1.1.4-1 +- Package Spec generated @@ -0,0 +1 @@ +edfd1f2b984da8a6bc28980663e0c849 ephemeral_port_reserve-1.1.4.tar.gz |