2015-12-22 55 views
0

使用分离模块的cron作业时,我需要做些什么特殊的事情?我找不到为什么我可以向localhost上的cron作业发出请求:8083/tasks/crontask(localhost:8083运行workers模块),它应该只是打印一个简单的行,并且不会打印到控制台,虽然它说,如果我通过运行http://localhost:8000/cron并点击运行按钮来运行请求,那么请求是成功的,但即使如此,它仍然无法打印到控制台。(ndb,python,gae) - 使用多个模块的cron作业超时

如果我刷新页面localhost:8083/tasks/crontask作为触发cron作业的一种方式,它会超时。

再次,如果我去为localhost:8001和点击运行按钮,它说请求/任务/ crontask是成功的,但像它应该

在send_notifications_handler未打印控制台在工人模块

cron: 

- description: something 

    url: /tasks/crontask 

    schedule: every 1 minutes 

    target: workers 
在外务工/处理目录

class CronTaskHandler(BaseApiHandler): 

    def get(self): 

     print "hello, this is a cron job" 

在cron.yaml内的.py

在init.py在工人/ routes.py工人/处理目录

from send_notifications_handler import CronTaskHandler 

#--- Packaging 



__all__ = [ 

    CounterWorker, 

    DeleteGamesCronHandler, 

    CelebrityCountsCronTaskHandler, 

    QuestionTypeCountsCronHandler, 

    CronTaskHandler 

] 

Route('/tasks/crontask', handlers.CronTaskHandler, methods=['GET']), 

// +++++++++++ +++++++++更新/分辨率+++++++++++++

  1. 打印语句正常,打印到控制台

  2. 是,cron作业将使用开发服务器下火一次,虽然它不重复

  3. 的问题是,_ah /启动模块中被路由到拉队列永不停止。删除拉队列解决了问题。

+0

将打印的值通常返回给请求者作为响应,而不是输出到控制台。如果你想让事情出现在控制台上,你应该使用日志记录。 –

+0

奇怪..打印语句总是打印到控制台,当他们在处理程序中被解雇时..我一直这样做了好几个月..而且我知道我已经完成了一个简单的cron作业,可以像这样打印到控制台,唯一的区别是,现在我使用单独的模块..它似乎运行在默认模块,而不是工作模块 –

回答

0

这实际上是预期的行为时执行cron作业本地

如果你看一看到docs,它说以下内容:

开发服务器不会自动运行您的cron作业。您可以使用本地桌面的cron或计划任务界面来使用curl或类似工具触发作业的URL。

您需要在本地服务器上手动执行cron作业,方法是访问http://localhost:8000/cron,如您在文章中所述。

+0

哈哈,是的,这正是为什么这个评论没有多大帮助;)。我没有'通过访问http:// localhost:8000/cron'在本地服务器上手动执行cron作业,它仍然没有打印。我也直接在浏览器中点击链接。仅仅因为它不能保持运行并不意味着它不应该执行一次 –

0

/++++++++++++++++++++更新/分辨率+++++++++++++

  1. 打印声明是罚款和不打印到控制台

  2. 是,使用开发服务器时,cron作业将闪光一次,虽然它不重复,这是开发服务器

  3. 的问题是正常行为该模块中的_ah/start被路由到永不停止的拉队列。删除拉队列解决了问题。

  4. 感谢使用打印建议