4

我寻找一种创建伪 cronjobs 的可能性,因为我不能在 UNIX 上使用真正的作业。

由于 Python 脚本可以无限期运行,我认为 Python 将是一个很好的解决方案。

在 Google App Engine 上,您可以设置 Python 脚本,而且它是免费的。所以我应该使用 App Engine。

App Engine 允许 160,000 次外部 URL 访问(对吗?),因此您应该有 160000/31/24/60 = 每分钟 3,6 次访问。

所以我的脚本是:

import time
import urllib
while time.clock() < 86400:
    # execute pseudo-cronjob file and then wait 60 seconds
    content = urllib.urlopen('http://www.example.org/cronjob_file.php').read()
    time.sleep(60)

不幸的是,我无法测试脚本,所以我的问题是:1)你认为这会起作用吗?2) 是否允许(Google TOS)将服务用于此类活动?3) 我计算的每分钟 URL 访问次数是否正确?

提前致谢!

4

5 回答 5

6

也许我误解了你,但是 cron 配置文件会让你这样做(没有 Python)。您可以在 cron.yaml 文件中添加类似的内容:

cron:
- description: job that runs every minute
  url: /cronjobs/job1
  schedule: every minute

有关调度的更多信息,请参阅Google 的文档

于 2009-04-16T12:48:53.550 回答
2

谷歌对任务的运行时间有一些限制。

在 SDK 中进行的 URLFetch 调用现在有 5 秒超时,这里

它们允许您在任何一天安排多达 20 个 cron 任务。 这里

于 2009-04-16T20:28:05.913 回答
1

重复,请参阅google appengine 上的 cron 作业

GAE 现在正式支持 Cron 作业: http ://code.google.com/appengine/docs/python/config/cron.html

于 2009-04-16T11:52:31.470 回答
1

您可能想澄清您想要以哪种方式进行操作

您想使用 appengine 来运行作业吗?即,该工作在谷歌的服务器上运行?

或者

你想在你的服务器上使用你的 OWN 代码,并使用谷歌应用引擎来触发它吗?

如果是前者:谷歌现在做 cron。使用它:)

如果是后者:您可以使用 google 的 cron 来触发您自己的,即使它是间接的(即 google-cron 调用 google-app-engine 来调用 your-app)。

如果可以,请启动一个线程来完成这项工作,以便您的页面立即返回。不要忘记:如果你调用http://whatever/mypage.php,并且你的浏览器死掉了(或者在这种情况下,谷歌会因为运行时间过长而终止你的进程),php 脚本通常仍然会运行到最后——输出只是去没有在哪里。

如果做不到这一点,请尝试启动一个线程(不确定您是否可以在 PHP 中做到这一点 - 我是 PHP 的 C# 新手)

如果一切都失败了:获得更好的虚拟主机!我每月为 dreamhost.com 支付 6 美元左右,我可以在他们的服务器上运行 cron 作业 - 它包括在内。他们做 PHP、Rails 等。您甚至可以 ping 我以获得折扣代码 :) (查看网站的个人资料等)

于 2009-04-16T20:47:24.230 回答
0

按照 Nic Wise 所说的去做,或者使用 www.guardiano.pm 之类的服务外包 cronjob,这样您就可以真正调用 www.yoursite.com/myjob.php,并且每次调用该 url 时都会执行您想要的操作。

Ps 是免费的 Pss 是我的宠物项目,处于测试阶段

于 2015-06-12T16:00:21.640 回答