在哪里托管定期运行的 Python 或 Java 服务?
Posted
技术标签:
【中文标题】在哪里托管定期运行的 Python 或 Java 服务?【英文标题】:Where to host a periodically running Python or Java service? 【发布时间】:2011-03-23 01:07:42 【问题描述】:我将构建一个小服务来监控 IMAP 电子邮件帐户并对已读邮件进行操作。为此,它只需要每隔 10 分钟运行一次,不需要外部触发器,但我想在外部托管此服务(这样我就不必担心正常运行时间。)
为了独立于机器,我可以用 Java 或 Python 编写服务。 什么是好的托管服务提供商?这两种语言中哪一种得到更好的支持?
服务要么一直运行(并且必须自己等待),要么每 10 分钟启动一次。我猜大多数(网络)主机都面向 request 驱动的代码(例如 JSP),我假设它们关闭了永远运行的进程。谁为上述用户编写的服务提供托管服务?
【问题讨论】:
【参考方案1】:查看Google App Engine。您可以为您的 Java 或 Python 脚本设置一个 cron 作业。
【讨论】:
【参考方案2】:根据您需要的操作以及对资源的要求,Google App Engine 可能非常适合 Python 和 Java 服务(GAE 相当不错地支持这两种语言)。 cron jobs 可以设置为每 10 分钟运行一次(我提供的 URL 显示了如何使用 Python 执行此操作),如果您需要在特定场合执行的工作量超过 30 秒的限制,您可以将更多任务排队GAE 支持。
GAE 非常适合开始和试验,因为它为您的工作可能消耗的大多数资源提供了相当大的免费配额(您需要启用计费、提供信用卡并设置预算,以允许您的工作消费超过他们的免费配额,但是)。
如果您认为 GAE 存在您无法忍受的限制,或者会因为超出免费配额的收费使用资源而花费您太多,那么任何支持类 Unix cron 作业调度程序的托管服务提供商都应该是可以接受的。每 10 分钟从头开始一个 Python 脚本可能比从头开始一个 JVM 更快,但这取决于你每 10 分钟必须做什么(对于某些类型的任务,Python 会一样快,或者也许更快——对于其他人来说它会更慢,我们无法猜测你需要什么样的任务,或者在什么“临界点”,可能更快的 JVM 将“为自己的启动付费”,而可能更慢Python...基本上你需要自己评估一下!-)。
【讨论】:
@halloleo,我看到其他答案也暗示了这一点,但我很高兴听到这些细节有帮助!【参考方案3】:您很幸运,因为 Google AppEngine 为 Python 和 Java 提供了 CRON 作业。 GAE - Python GAE - Java
【讨论】:
AppEngine 的一个重要特点是它有非常慷慨的免费服务水平。您有可能完全免费运行您的应用程序。此外,SO 上的 google-app-engine 标签非常活跃,您可以轻松解决任何问题。以上是关于在哪里托管定期运行的 Python 或 Java 服务?的主要内容,如果未能解决你的问题,请参考以下文章
Python 脚本在定期运行时工作正常,但在使用 PyInstaller 编译时不能正常运行