【发布时间】:2015-12-22 21:31:20
【问题描述】:
在为单独的模块处理 cron 作业时,我需要做些什么特别的事情吗?我不知道为什么我可以在 localhost:8083/tasks/crontask 向 cron 作业发出请求(localhost:8083 运行工人模块),它应该只打印一个简单的行,它不打印到控制台,虽然它说如果我通过转到http://localhost:8000/cron 并点击运行按钮来运行它,请求是成功的。但即使这样仍然没有命中,让它打印到控制台。
如果我刷新页面 localhost:8083/tasks/crontask 作为触发 cron 作业的一种方式,它会超时。
再次,如果我转到 localhost:8001 并点击运行按钮,它表示对 /tasks/crontask 的请求成功,但它不会像预期的那样打印到控制台
在workers/handlers目录下的send_notifications_handler.py中
class CronTaskHandler(BaseApiHandler):
def get(self):
print "hello, this is a cron job"
在工作模块外的 cron.yaml 中
cron:
- description: something
url: /tasks/crontask
schedule: every 1 minutes
target: workers
在workers/handlers目录的init.py中
from send_notifications_handler import CronTaskHandler
#--- Packaging
__all__ = [
CounterWorker,
DeleteGamesCronHandler,
CelebrityCountsCronTaskHandler,
QuestionTypeCountsCronHandler,
CronTaskHandler
]
在workers/routes.py中
Route('/tasks/crontask', handlers.CronTaskHandler, methods=['GET']),
//++++++++++++++++++++++更新/分辨率+++++++++++++
打印语句很好,并打印到控制台
是的,cron 作业将在使用开发服务器下触发一次,尽管它不会重复
问题是该模块中的 _ah/start 被路由到一个永不停止的拉取队列。删除拉取队列解决了这个问题。
【问题讨论】:
-
使用 print 通常会将打印的值作为响应返回给请求者,而不是打印到控制台。如果您希望内容显示在控制台上,您应该使用日志记录。
-
奇怪.. print 语句在处理程序中被触发时总是打印到控制台.. 我已经做了几个月了.. 我知道我已经完成了一个简单的 cron 作业,它确实打印了到这样的控制台,唯一的区别是现在我正在使用单独的模块..它似乎在默认模块而不是工作模块上运行
标签: python google-app-engine cron