首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按一天中的时间安排web动态次数

问按一天中的时间安排web动态次数
EN

Stack Overflow用户
提问于 2012-08-14 17:15:27
回答 3查看 1.4K关注 0票数 15

有没有办法使用Heroku调度程序在一天中的特定时段启动和停止web dynos?比如在上班时间有2个动力,晚上只有1个动力?

我真的希望避免将普通的用户/通行证凭证放入应用程序本身,所以我正在寻找一种安全的方法来做到这一点(除了每天为每个应用程序手动执行)。直接使用"heroku ps:scale web=2“自然会很好,但据我所知这是不受支持的。

感谢您的提前反馈……

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-15 06:46:27

您可以通过创建使用heroku API的脚本来按计划扩展Heroku dynos。然后,您可以在Procfile中创建一个条目,并通过Heroku Scheduler附加组件调用它。下面是操作步骤:

首先,您需要将'heroku‘python模块添加到requirements.txt中

heroku==0.1.2

接下来,创建一个包含您的API密钥的config var,以便您的脚本可以使用该API。

heroku配置:添加HEROKU_API_KEY=your_api_key_string

您可以找到您的接口密钥on your heroku account page。

现在,您将能够编写一个python脚本来扩展dynos。下面是一个非常基本的脚本,它接受dynos的数量作为命令行参数。

代码语言:javascript
复制
import os
import sys

import heroku

"""Scale heroku web processes using the heroku python API."""

# you may want to add better argument processing, use argparse, etc.
dynos = int(sys.argv[1])
cloud = heroku.from_key(os.environ.get('HEROKU_API_KEY'))
app = cloud.apps['your_app_name']

try:
    # you may want to add a maximum dyno check here to prevent costly mistakes ;)
    webproc = app.processes['web']  
    webproc.scale(dynos)

except KeyError:
    # note: scaling to 0 dynos or attempting to scale up if 0 web dynos exist
    # both throw this error. Make sure you have at least one dyno.
    print >> sys.stderr, "Could not scale web processes - are there 0 web dynos running?"

然后,您可以在Heroku Scheduler网页中定义整个任务,也可以在Procfile中定义它并从网页调用Procfile进程名称。我更喜欢后者,因为它使得更新或更改流程变得很容易,而不必登录heroku的网站。

所以,在你的Procfile中创建条目:

代码语言:javascript
复制
scale_up: python scale.py 2
scale_down: python scale.py 1

然后安排它们:

​

​

瞧!你的dynos现在会在一天中的指定时间放大或缩小。

--

请注意,一旦您在Scheduler网页上创建了计划任务,您就无法编辑它运行的时间,但如果您创建了一个新任务,您可以设置时间日期,然后删除旧任务。

注2:如果你试图缩小到0dynos,或者如果你试图放大当前存在的0web dynos,heroku python API似乎会抛出一个KeyError。为了避免这两种情况,只要不要缩减到0dynos。

票数 14
EN

Stack Overflow用户

发布于 2012-08-14 19:00:57

它没有内置到平台中,但应该很容易通过调度器和使用API令牌来实现。

票数 1
EN

Stack Overflow用户

发布于 2021-10-13 17:12:35

现在可以轻松使用heroku插件crontogo https://elements.heroku.com/addons/crontogo

注意:这是一个付费插件,自2021年10月起仅在美国/欧洲地区可用

参考https://crontogo.com/blog/how-to-schedule-heroku-cli-commands/

设置2个作业

第一个工作“Dyno缩减规模”:

Cron表达式:0 18 ** 1-5

命令: heroku dyno:scale web=1:Standard-1X

此作业将在工作日(周一至周五)下午6点运行,并将应用程序缩减至1 Standard-1X dyno。

第二个任务“Dyno scale up”:

Cron表达式:0 9** 1-5

命令: heroku dyno:scale web=2:Standard-1X

此作业将在工作日(周一至周五)上午9点运行,并将应用程序扩展到2个Standard-1X dynos。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11949240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档