我在Heroku中使用Django,在我的网站中,我每个月通过Celery发送批量电子邮件。由于我每个月只使用一次这个工人,所以我不想一直付钱。我可以使用heroku scale workers=0
停止工作人员,并在发送电子邮件之前和之后手动使用heroku scale workers=1
进行缩放。
然而,由于其他非技术人员也将从django发送电子邮件,他们无法运行这些命令。我可以通过在Heroku网络进程中执行Python命令来阻止工作人员吗?我可以在发送电子邮件之前执行任何命令。
答案 0 :(得分:1)
您可以使用heroku.py python api客户端执行此操作。它在PyPi上可用,源代码可在https://github.com/heroku/heroku.py
获得您还可以使用调度程序插件,并拥有一个计划每月运行一次的命令来发送您的电子邮件,而无需扩展流程。
答案 1 :(得分:1)
heroku.py有一个错误,请看问题:https://github.com/heroku/heroku.py/issues/10和https://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})