如何解决docker容器中使用gurobicloud运行pyomo时出现的“Gurobipy.gurobierro:Network error”

2024-05-18 20:36:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在docker容器中运行python应用程序,该容器使用pyomo来制定数学优化问题,并使用Gurobi cloud solver(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解算器时,日志文件显示以下消息(请注意,我将下面的日志文件修改为状态“[pool id&;name]”,而不是实际的池id):

------------------------ 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和一个日志文件开始

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: 

我感觉docker容器中的gurobi客户端会记住gurobi云服务器的作业ID,即使在由于空闲时间而关闭云服务器之后也是如此。这样,第二天,docker尝试使用旧作业ID访问云服务器计算机,但旧作业ID不再有效


Tags: todockernameinfoid应用程序cloudparameter

热门问题