如何用VS Code进行远程API调试

324 阅读3分钟
  • 每个Zato环境都有默认的配置,允许其服务器从Visual Studio Code的调试器中启动。

  • 以这种方式启动的服务器可以远程运行,例如,你的本地IDE可能在Mac或Windows上,而你的Zato服务器将在一个远程Linux实例中。这仍然可以让你对远程部署的服务进行调试。

  • 无论服务器是在Docker下还是直接在Linux虚拟机中运行都没有关系。

  • 本文包含如何以这种方式启动Zato服务器以及如何从VS Code远程调试你的代码的分步说明。

前提条件

  • 确保你的远程Zato服务器运行在一个至少有两个CPU和2GB内存的Linux系统中。如果你使用AWS,选择一个中等的实例将是正确的。

  • 确保你的本地主机和远程Linux服务器之间有SSH连接,也就是说,你可以ssh进入Zato服务器所在的系统。作为提醒,如果你使用Docker Quickstart,默认端口是22022。

  • 如果服务器在Docker Quickstart实例中运行,就没有进一步的先决条件,你可以跳到下一节

  • 如果你自己创建了一个Zato集群,检查这两个文件是否存在。

    /path/to/your/environment/.vscode/launch.json
    /path/to/your/environment/.vscode/settings.json
    
  • 如果文件不存在,在这里下载:launch.jsonsettings.json

  • 下载后,将它们保存到上述位置;如果.vscode 目录不存在,则创建它。最终的结果应该是,例如,如果你的环境是在/opt/zato/env/dev ,文件将被送到/opt/zato/env/dev/.vscode

VS代码中的SSH连接

  • 在VS Code中,安装一个名为Remote - SSH的扩展。

  • 安装后,在IDE的左下角会有一个新的按钮。该按钮将让你打开SSH连接。点击它,然后点击 "连接到主机"

  • 选择你的Zato服务器所在的主机,IDE将打开一个新窗口,使用SSH连接到该主机。如有必要,请输入SSH凭证。注意,你现在会在一个新的IDE窗口中。

打开一个远程环境

  • 一旦你在一个新的窗口中连接,选择 "Open Folder",选择你的环境所在的目录,然后点击OK

  • 在Docker Quickstart下,路径将是/opt/zato/env/qs-1/ 。在其他环境下,请相应地导航到你的环境的路径。

  • 用Zato环境打开远程目录后,你的IDE窗口会如下图所示。

启动服务器

  • 点击Run and Debug 图标。

  • 点击Remote Zato Main 选项旁边的播放图标。

  • IDE现在将致力于在远程Linux服务器中安装它自己的所有组件--第一次可能需要几分钟时间。这个过程是CPU密集型的,这就是为什么2个CPU是一个先决条件。

  • 如果 VS Code 告诉你它的 Python IDE 扩展没有安装在远程 SSH 系统中,请选择通过 SSH 安装它。这也可能需要几分钟的时间。

  • 在 IDE 完成其远程组件的安装之前,需要一些时间 - 在 IDE 窗口的页脚会有反馈。一旦它们安装完毕,就可以进入下面的章节。

部署一个测试服务

  • 将下面的代码保存为demo.py ,并在现在已经启动的远程服务器中进行热部署。注意突出显示的那一行,我们很快就会给它添加一个断点。
# -*- coding: utf-8 -*-

# Zato
from zato.server.service import Service

class MyService(Service):
    def handle(self):
        msg = 'Hello, I am a demo service'
        self.logger.info(msg)

调试一个服务

  • 在IDE中,在/path/to/server/work/hot-deploy/current/demo.py 的路径下找到远程服务器上部署的服务,并打开它。

  • 在第9行添加一个断点,如下所示。

  • 以任何你喜欢的方式调用服务,例如通过REST、Dashboard或从命令行调用。

  • 调试器将在第9行停止,显示本地变量、调用堆栈和其他细节,就像它是一个本地服务器一样。

祝贺你!这个过程结束了,一切都设置好了,你现在可以远程调试你的ZatoAPI服务了。