在处理分离模块的cron作业时,我需要做些什么特别的事情吗?我无法弄清楚为什么我可以在localhost上向cron作业发出请求:8083 / tasks / crontask(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"
在worker模块外的cron.yaml中
cron:
- description: something
url: /tasks/crontask
schedule: every 1 minutes
target: workers
在worker / handlers目录的init.py中
from send_notifications_handler import CronTaskHandler
#--- Packaging
__all__ = [
CounterWorker,
DeleteGamesCronHandler,
CelebrityCountsCronTaskHandler,
QuestionTypeCountsCronHandler,
CronTaskHandler
]
in workers / routes.py
Route('/tasks/crontask', handlers.CronTaskHandler, methods=['GET']),
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
print语句很好,可以打印到控制台
是的,cron作业会在使用dev服务器时触发一次,虽然它不会重复
问题是该模块中的_ah / start被路由到一个永不停止的拉取队列。删除拉取队列解决了问题。
答案 0 :(得分:0)
这实际上是在本地执行cron作业时的预期行为。
如果您查看docs,请说明以下内容:
开发服务器不会自动运行您的cron作业。您可以使用本地桌面的cron或计划任务界面,使用curl或类似工具触发作业的网址。
如您在帖子中所述,您需要访问http://localhost:8000/cron,在本地服务器上手动执行cron作业。
答案 1 :(得分:0)
/ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
print语句很好,可以打印到控制台
是的,使用开发服务器时,cron作业将触发一次,虽然它不重复,这是开发服务器的正常行为
问题是该模块中的_ah / start被路由到一个永不停止的拉取队列。删除拉取队列解决了问题。
感谢您的建议