Я запускаю приложение python в контейнере docker, который использует pyomo для постановки задачи математической оптимизации и использует решатель облака Gurobi (gurobi_direct) для решения задачи оптимизации.
Однако первые несколько раз после создания контейнера docker приложение работает нормально. Но через некоторое время, когда приложение не используется (например, 1 час), приложение возвращает приведенное ниже сообщение об ошибке при попытке инициализации gurobi-модели и запуска облачного решателя gurobi.
Traceback (most recent call last):
File "/home/guser/miniconda/lib/python3.7/site-packages/pyomo/solvers/plugins/solvers/gurobi_direct.py", line 238, in _set_instance
self._solver_model = self._gurobipy.Model(model.name)
File "model.pxi", line 75, in gurobipy.Model.__init__
gurobipy.GurobiError: Network error
Обратите внимание, что первый Когда я запускаю приложение, т. е. при первом использовании решателя gurobi, файл журнала показывает следующее сообщение (обратите внимание, что я изменил файл журнала ниже, указав «[идентификатор пула и имя]» вместо фактического идентификатора пула ):
------------------------ Start calculation steps -----------------------
Using license file /home/guser/gurobi.lic
INFO:gurobipy:Using license file /home/guser/gurobi.lic
INFO:gurobipy:Set parameter CloudAccessID
Set parameter CloudAccessID
Set parameter CloudSecretKey
Set parameter CloudPool to value [pool id & name]
INFO:gurobipy:Set parameter CloudSecretKey
INFO:gurobipy:Set parameter CloudPool to value [pool id & name]
Waiting for cloud server to start (pool [pool id & name])...
INFO:gurobipy:Waiting for cloud server to start ([pool id & name])...
Starting...
Compute Server job ID: [server Job-ID]
Capacity available on [pool id & name] cloud pool - connecting...
INFO:gurobipy:Capacity available on [pool id & name] cloud pool - connecting...
Established HTTPS encrypted connection
INFO:gurobipy:Established HTTPS encrypted connection
Parameter OutputFlag unchanged
Value: 1 Min: 0 Max: 1 Default: 1
И в последующие моменты он выглядит несколько иначе: предупреждение о состоянии решения предыдущего запуска, пропускает часть об установлении https-соединений и начинается с Outputlag и log-файла. файл.
WARNING: Loading a SolverResults object with an 'aborted' status, but
containing a solution
------------------------- Start calculation steps -----------------------
Parameter OutputFlag unchanged
INFO:gurobipy:Parameter OutputFlag unchanged
Value: 1 Min: 0 Max: 1 Default: 1
INFO:gurobipy: Value: 1 Min: 0 Max: 1 Default: 1
Changed value of parameter LogFile to /tmp/tmp0fd91rm9.log
INFO:gurobipy:Changed value of parameter LogFile to /tmp/tmp0fd91rm9.log
Prev: Default:
У меня такое ощущение, что клиент gurobi в docker -контейнерах запоминает идентификатор задания облачного сервера gurobi даже после выключения облачного сервера из-за время простоя. Таким образом, на следующий день docker пытается получить доступ к машине облачного сервера со старым идентификатором задания, но старый идентификатор задания больше не действителен.