我使用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时,我可以看到来自时钟进程的日志,但只有一些:
我的问题是,如何让日志可以直播?或者我误解了这个并且这种行为是正常的吗?
修改:经过调查后,我发现我也没有从 web 进程获取日志。我认为它是工头和枪炮的混合物,阻止了原木出现,所以我放弃了枪支进行开发,我将领班开始改为:
foreman run -e local.env python app/myapp.py runserver
最后我放弃了使用时钟过程,因为我认为为单独的dyno付费只是为了运行时钟过程是浪费金钱。相反,我正在使用铁工人调度,这足以满足我的简单需求。