使用Django在Heroku中空闲工作者

时间:2012-01-24 04:53:51

标签: django heroku celery django-celery

我在Heroku中使用Django,在我的网站中,我每个月通过Celery发送批量电子邮件。由于我每个月只使用一次这个工人,所以我不想一直付钱。我可以使用heroku scale workers=0停止工作人员,并在发送电子邮件之前和之后手动使用heroku scale workers=1进行缩放。

然而,由于其他非技术人员也将从django发送电子邮件,他们无法运行这些命令。我可以通过在Heroku网络进程中执行Python命令来阻止工作人员吗?我可以在发送电子邮件之前执行任何命令。

2 个答案:

答案 0 :(得分:1)

您可以使用heroku.py python api客户端执行此操作。它在PyPi上可用,源代码可在https://github.com/heroku/heroku.py

获得

您还可以使用调度程序插件,并拥有一个计划每月运行一次的命令来发送您的电子邮件,而无需扩展流程。

答案 1 :(得分:1)

heroku.py有一个错误,请看问题:https://github.com/heroku/heroku.py/issues/10https://github.com/heroku/heroku.py/issues/4

我做了一个快速的解决方案,直接使用http资源:

cloud = heroku.from_key(settings.HEROKU_APIKEY)    
cloud._http_resource(method='POST', 
   resource=('apps', 'appnane', 'ps', 'scale'), 
   data={'type': 'processname', 'qty': 1})

cloud._http_resource(method='POST', resource=('apps', 'appname', 'ps', 'scale'), data={'type': 'processname', 'qty': 0})