【问题标题】:How can I run a simple python script hosted in the cloud on a specific schedule?如何按特定时间表运行托管在云中的简单 python 脚本?
【发布时间】:2018-04-29 00:41:15
【问题描述】:

假设我有一个文件“main.py”,我只想让它每隔 10 分钟运行一次,但不在我的电脑上。该文件使用的唯一外部库是 mysql.connector 和 pip 请求。

我尝试过的事情:

PythonAnywhere - 免费层限制太多(需要连接到外部数据库)

AWS Lambda - 最高仅支持 Python 2.7,转换了我的代码但仍有问题

Google Cloud Platform + Heroku - 只能找到涵盖部署应用程序的教程,我认为这些可以满足我的需求,但我不知道如何。

谢谢!

【问题讨论】:

    标签: python amazon-web-services heroku cron


    【解决方案1】:

    我先看看我之前在 unix.stackexchange 上提出的this 问题/答案 - 我安装了 AWS redhat,它可以免费使用。

    一旦您决定了您的虚拟机,您就可以使用任何 SSH 客户端将 SSH 添加到您的服务器并上传您的 Python 脚本。个人偏好是this 应用程序。

    如果您需要更新服务器上的 Python 版本,您可以通过安装所需的 Python RPM 来完成。快速 google 应该返回所需 RPM 的 yum [或您正在使用的任何 RPM 管理系统] 存储库。

    一旦您安装了所需的 Python 版本,我建议您查看可用于安排作业的“crontab”。您可以将 cronjob 设置为每 10 分钟运行一次,这将调用您的脚本。

    有关如何使用 crontab 的更多信息,请参见 this 站点

    【讨论】:

      【解决方案2】:

      这听起来像是AWS Lambdasupports Python 的完美用例。您可以使用 Scheduled Events 按计划调用您的 Lambda。

      我看到您尝试了 Lambda,但它并没有为您工作,这太糟糕了,因为这似乎是最简单的路线。您还可以启动 EC2 实例并使用 userdata 在实例启动时安排 cron。

      另一个选项是Elastic Beanstalk worker,其中包含定义您的日程安排的 cron.yml。 Elastic Beanstalk 支持 Python 3.4。

      【讨论】:

        【解决方案3】:

        更新:AWS 现在支持 Python 3.6。配置时只需从运行环境中选择Python 3.6即可。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-11-27
          • 2015-11-08
          • 2020-11-08
          • 2020-06-10
          • 1970-01-01
          • 1970-01-01
          • 2015-08-31
          相关资源
          最近更新 更多