代码之家  ›  专栏  ›  技术社区  ›  zgirod

Fluent Migrator正在azure/kudu中等待用户输入

  •  0
  • zgirod  · 技术社区  · 7 年前

    我正在尝试使用fluent migrator在azure/kudu内部进行数据库部署。我正在从部署命令调用Migrate.exe。在azure/kudu中运行时,迁移成功运行,然后等待用户输入。显然,没有用户输入,部署会抛出超时错误。准确的错误是:

    Command 'starter.cmd deploy.cmd' was aborted due to no output nor CPU activity for 61 seconds.
    

    当我在本地运行相同的Migrate.exe时,它会运行,然后返回到命令提示符,而不等待用户输入。

    你知道为什么在Azure/kudu中,脚本会等待用户输入,而在本地却不会?

    2 回复  |  直到 7 年前
        1
  •  1
  •   AjayKumar    7 年前

    所有Azure Web应用(以及移动应用/服务、WebJobs和功能)都运行在一个称为sandbox的安全环境中。每个应用程序都在自己的沙箱中运行,将其执行与同一台计算机上的其他实例隔离开来,并提供了额外的安全和隐私级别,否则将不可用。 沙盒本身运行在由Azure Web应用管理服务(在道德上等同于Windows中的WAS服务)控制的作业中。沙盒中的进程可以创建自己的嵌套作业,供子进程占用。您可以在此处查看沙盒限制:常规沙盒限制: https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox#general-sandbox-restrictions

    Azure负载平衡器的默认空闲超时设置为4分钟。这通常是web请求的合理响应时间限制。如果你的web应用需要后台处理,我们建议使用Azure WebJobs。Azure web应用可以调用WebJobs并在后台处理完成时收到通知。您可以从使用WebJobs的多种方法中进行选择,包括队列和触发器。 WebJobs是为后台处理而设计的。在WebJob中,您可以根据需要执行任意多的后台处理。

        2
  •  0
  •   zgirod    7 年前

    结果发现我错误地调用了powershell脚本。

    以前,旧的(不工作的)部署命令得到如下调用:call:ExecuteCmd PowerShell-Version 2.0“..\Deploy.ps1” 我把它改为:call:ExecuteCmd PowerShell“.\Deploy.ps1”

    我刚刚删除了硬编码“-2.0版”,一切运行顺利。

    因此,如果调用硬编码版本为2.0的powershell脚本时遇到一些奇怪的错误,则应删除该行。

    推荐文章