Google 云调度程序 Java 使用 Selenium 容器化的作业

Google Cloud scheduler Java job containerized with Selenium

我有一个 Java 代码来执行与网页的一些交互,并为此使用了 Selenium。 现在我想让这段代码每小时执行一次,我认为这是探索云世界的好机会。

我已经在 Google Cloud 上创建了一个帐户。 因为我的应用程序需要有一个驱动程序才能使用 Selenium(Firefox 的 gecko 驱动程序),所以我必须创建一个 docker 图像来设置它在其中需要的一切。

在Google云服务中,有一个“Cloud Scheduler”可以让我运行一个代码,当我想的时候。

但这是我的问题:

如果有人能帮助我更好地了解这一点,我将非常高兴。我不是一个完全的初学者我作为 Java / Java 脚本开发人员工作了 5 年并且 docker 化了一些应用程序但是关于云的一切都是一个大块,不容易知道从哪里开始。

所以你:

  • 正在使用 docker 个图片
  • 运行你的工作量偶尔
  • 不愿意使用云功能

==> Cloud 运行 是您最好的选择。这里是 Google 云 运行 快速入门:https://cloud.google.com/run/docs/quickstarts/prebuilt-deploy

请记住,您的容器化应用程序需要侦听 HTTP 请求,因此请查看 Cloud 运行 Container runtime contract

您终于可以从 Cloud Scheduler 触发 Cloud 运行,这里有详细的文档说明如何操作 https://cloud.google.com/run/docs/triggering/using-scheduler

正如@MBHAPhoenix 所说,云 运行 是您的最佳选择。然后,您可以从 Cloud Scheduler 触发作业。我们的一个项目目前 运行 有这个确切的场景,但我们的容器是 Python。我们写了一篇关于它的文章 here

您应该注意,要从 Cloud Scheduler 触发您的 Cloud 运行 作业,您必须 'secure it'。这意味着您将无法仅在网络浏览器中键入 URL。服务帐户将负责 运行 Cloud 运行 作业,然后您需要授予您的 Cloud Scheduler 服务访问此服务帐户的权限,以便它可以调用 Cloud 运行 作业。我一直想提出一个 post 关于执行此操作的确切步骤(将尝试在本周末完成)。

在成本方面,我们有文章中的这个片段

...Cloud 运行 仅在收到 HTTP 请求时运行。当一个 HTTP 请求进来时,它会死去活来执行你的代码。当它执行完请求后,它会再次进入 'dead' 直到下一个请求进来。这意味着你不会为花费的时间付费空转,即当它什么都不做时.....