使用Foreman在本地测试APScheduler

时间:2014-01-23 12:18:25

标签: python heroku foreman apscheduler

我使用foreman在本地运行我的python应用程序并测试它。这就是我的工作:

foreman start -e local.env

我正在尝试向我的应用添加日程安排,因此我安装了apscheduler并遵循tutorial on Heroku。我将此行添加到 Procfile

clock: python clock.py

我的 clock.py 看起来像这样:

from apscheduler.scheduler import Scheduler

sched = Scheduler()

@sched.interval_schedule(minutes=1)
def timed_job():
    print 'This job is run every minute.'

@sched.cron_schedule(day_of_week='mon-fri', hour=17)
def scheduled_job():
    print 'This job is run every weekday at 5pm.'

sched.start()
print 'Scheduler started'

while True:
    pass

所以现在,当我开始工头时,我可以看到:

11:54:05 web.1   | started with pid 16709
11:54:05 clock.1 | started with pid 16710
11:54:05 web.1   | 2014-01-23 11:54:05 [16709] [INFO] Starting gunicorn 18.0
11:54:05 web.1   | 2014-01-23 11:54:05 [16709] [INFO] Listening at: http://0.0.0.0:5000 (16709)
11:54:05 web.1   | 2014-01-23 11:54:05 [16709] [INFO] Using worker: sync
11:54:05 web.1   | 2014-01-23 11:54:05 [16713] [INFO] Booting worker with pid: 16713

看起来有效,但现在,我希望时钟进程应该每分钟记录一次消息,但事实并非如此。实际上我没有从时钟进程中获取任何日志,这是正常的吗?

我发现当我将其保留一段时间然后按Ctrl + C时,我可以看到来自时钟进程的日志,但只有一些:

  • 一个“计划程序已启动”消息
  • 两个“这项工作每分钟运行一次。”消息,即使我离开时间超过2分钟

我的问题是,如何让日志可以直播?或者我误解了这个并且这种行为是正常的吗?

修改:经过调查后,我发现我也没有从 web 进程获取日志。我认为它是工头和枪炮的混合物,阻止了原木出现,所以我放弃了枪支进行开发,我将领班开始改为:

foreman run -e local.env python app/myapp.py runserver

最后我放弃了使用时钟过程,因为我认为为单独的dyno付费只是为了运行时钟过程是浪费金钱。相反,我正在使用铁工人调度,这足以满足我的简单需求。

0 个答案:

没有答案