将Python可执行文件部署到Azure Service Fabric

将Python可执行文件部署到Azure Service Fabric,第1张

概述我正在寻找有用的解决方案,以将 Python可执行文件部署到Azure Service Fabric 有节点js here的文档,但我找不到任何与python相关的内容 小贴士:节省一些时间,并尝试先在本地运行.我的经验是,很多事情都可能出错,其中最难确定的是节点上的执行权. 建立 将Python部署到Service Fabric所需的步骤:  >确保在SF节点上安装了Python(包含您需要的软 我正在寻找有用的解决方案,以将 Python可执行文件部署到Azure Service Fabric

有节点Js here的文档,但我找不到任何与python相关的内容

解决方法 小贴士:节省一些时间,并尝试先在本地运行.我的经验是,很多事情都可能出错,其中最难确定的是节点上的执行权.

建立

将Python部署到Service Fabric所需的步骤:

 >确保在SF节点上安装了Python(包含您需要的软件包).

有两种方法可以做到这一点:

>
使用远程桌面使用您的端点“sf_cluster.westeurope.cloudapp.azure.com:node_port”导航到节点
其中node_port是(对我来说)3389-3393.然后通过从Python.org下载安装程序手动安装python.

>创建一个您在Guest Executable SetupEntryPoint中调用的python安装脚本,更多关于这一点.

在任何情况下,您都需要将Python放到节点上并确保将Python和Python / Scripts添加到节点路径中.

>
使用Guest Executable Service创建Service Fabric应用程序.
>将其指向您的python代码文件夹
>选择要运行的启动文件 – 将其留空
>选择CodePackage作为工作文件夹
>按确定.

您现在有一个服务结构应用程序,它将您的代码复制到您的服务结构群集但不执行任何 *** 作. (实际上它可能会因为没有定义端点而对你大喊大叫,但接下来就是这样)

现在我们得到了一些黑客攻击.
Service Fabric不会像运行examples from Microsoft中的node.exe一样运行Python.exe.
所以你需要做的是创建一个run.cmd脚本,基本上这样做:

python.exe main.py

将其用作EntryPoint.

现在,您在ServiceManifest.xml中的EntryPoint如下所示:

...    <EntryPoint>        <ExeHost>            <Program>run.cmd</Program>            <Arguments></Arguments>            <WorkingFolder>CodePackage</WorkingFolder>            <ConsoleRedirection fileRetentionCount="5" fileMaxSizeInKb="2048"/> //use this to get logging (very helpful ;)        </ExeHost>    </EntryPoint></CodePackage>

如果你想让SetupEntryPoint为你安装python,你可以这样做:

<SetupEntryPoint>  <ExeHost>    <Program>Setup\setup.bat</Program>    <WorkingFolder>CodePackage</WorkingFolder>  </ExeHost></SetupEntryPoint>

我的setup.bat看起来像这样(路径有一些问题):

C:\windows\System32\windowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -Command “.\Setup\pythonInstall.ps1”

我的解决方案中的代码被复制到这个结构中:

MyGuestExecutablePkg\    |    - Code\        - run.cmd        - main.py        - Setup\            - setup.bat        - ....    - Config\        - Settings.xml    - ServiceManifest.xmlApplicationManifest.xml

我希望这可以帮助某些人,但是我会阅读Guest Executable文档以了解我错过的任何内容. 1

政策

有些东西需要在服务结构节点上获得精简权限,这就是为了让它运行.cmd,.bat,Python.exe等等你的服务.
以下编辑来自ApplicationManifest.xml

....<ServiceManifestimport>    <ServiceManifestRef ServiceManifestname="MyGuestExecutablePkg" ServiceManifestVersion="1.0.0" />    <ConfigOverrIDes />    <PolicIEs>      <RunAsPolicy CodePackageRef="Code" UserRef="SetupadminUser" EntryPointType="Setup" />      <RunAsPolicy CodePackageRef="Code" UserRef="SetupadminUser" EntryPointType="Main" />    </PolicIEs>  </ServiceManifestimport>....

第一个策略是提升SetupEntryPoint,而第二个策略是复制EntryPoint,也就是说.你的服务.
确保在ApplicationManifest.xml的底部定义Principals.

</DefaultServices>  <Principals>    <Users>      <User name="SetupadminUser">        <MemberOf>          <SystemGroup name="administrators" />        </MemberOf>      </User>    </Users>  </Principals></ApplicationManifest>

最后的想法

我作为Flask API运行我的服务,因为这非常容易.所以“所有”Service Fabric会启动Flask API,然后确保它在崩溃时重新启动.
这样可以轻松地测试和验证部署的哪个部分崩溃,以及是否通过执行来启动和运行

netstat -na | find "5000"

在节点上验证API确实启动并运行.

在这之后,您当然需要在Azure门户中为服务结构集群打开负载balanser中的端口.

总结

以上是内存溢出为你收集整理的将Python可执行文件部署到Azure Service Fabric全部内容,希望文章能够帮你解决将Python可执行文件部署到Azure Service Fabric所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1193743.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存