Skip to content

tschm/mosek-license-server

Repository files navigation

Mosek License Server

PyPI version Apache 2.0 License Downloads pre-commit.ci status Coverage Status

Using a nginx image we expose a Mosek license on a server to be accessible from various research machines without sharing the actual license file in the underlying repositories.

This repository serves two purposes. It exposes the server but it is also the home for a little Python package to inject the license into your programs.

We solve a common problem here. Assume $20$ researchers work on $50$ different strategies. Using local copies of the same license file is a tedious exercise as the file needs to get updated once a year. Rather, each strategy would connect to the server to fetch a license using the mosek_license Python package. Once the strategy expires we only need to update the server. No change for the strategies is required.

License server

Copy your license file into folder

Copy the license file you have received (from Mosek) into the web folder. Name it mosek.

The file should look like

START_LICENSE
VENDOR MOSEKLM
# PSN-4183
FEATURE PTS MOSEKLM 10 31-jan-2024 uncounted ...
# PSN-4182
FEATURE PTON MOSEKLM 10 31-jan-2024 uncounted ...
END_LICENSE

Start the nginx server

Share the web folder (after you have copied your personal Mosek license into) via

docker run --name mosek -v $PWD/web:/usr/share/nginx/html:ro -p 8080:80 -d nginx

The license will now be exposed via http://localhost:8080/mosek

As an alternative you can run the script

./start_server.sh

The mosek_license module

Install via

pip install mosek-license-server

and then

import mosek

from mosek_license import license

license.upsert(server="http://localhost:8080/mosek")

Problems

In case you experience problems please check:

  • the license file is named mosek
  • the license file starts with START_LICENSE
  • the license file ends with END_LICENSE
  • the dates in the license file are still in the future
  • the server is running, e.g. docker ps -all (and check for mosek)
  • you can download a license file from the server, e.g.
curl <http://localhost:8080/mosek>

works.

  • you can run the demo in the demo folder

Still lost? Please open an issue.

Poetry

We assume you share already the love for Poetry. Once you have installed poetry you can perform

make install

to replicate the virtual environment we have defined in pyproject.toml and locked in poetry.lock.