Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按一天中的时间安排web动态节点的数量_Python_Django_Dynamic_Heroku - Fatal编程技术网

Python 按一天中的时间安排web动态节点的数量

Python 按一天中的时间安排web动态节点的数量,python,django,dynamic,heroku,Python,Django,Dynamic,Heroku,有没有办法使用Heroku调度程序在一天中的特定时段启动和停止web dynos?比如说在工作时间两个迪诺人,晚上只有一个迪诺人 我真的很想避免将普通的用户/通行证凭证放入应用程序本身,因此我正在寻找一种安全的方法来做到这一点(除了每天为每个应用程序手动执行之外)。直接使用“heroku ps:scaleweb=2”当然不错,但据我所知,这是不受支持的 感谢您提前提供反馈…它没有内置到平台中,但应该很容易通过调度程序和使用API令牌来实现。您可以通过创建使用heroku API的脚本来按计划扩展

有没有办法使用Heroku调度程序在一天中的特定时段启动和停止web dynos?比如说在工作时间两个迪诺人,晚上只有一个迪诺人

我真的很想避免将普通的用户/通行证凭证放入应用程序本身,因此我正在寻找一种安全的方法来做到这一点(除了每天为每个应用程序手动执行之外)。直接使用“heroku ps:scaleweb=2”当然不错,但据我所知,这是不受支持的


感谢您提前提供反馈…

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

您可以通过创建使用heroku API的脚本来按计划扩展heroku dynos。然后在Procfile中创建一个条目,并通过Heroku调度程序插件调用它。以下是方法:

首先,您需要将“heroku”python模块添加到
requirements.txt

heroku==0.1.2

接下来,创建一个包含API密钥的配置变量,以便脚本可以使用API

heroku配置:添加heroku\u API\u KEY=您的\u API\u KEY\u字符串

您可以找到您的API密钥

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

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中创建条目:

scale_up: python scale.py 2
scale_down: python scale.py 1
然后安排他们:

瞧!您的动态系统现在将在一天中的指定时间放大或缩小

--

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


注意2:如果您试图缩小到0个动态对象,或者如果您试图扩大到当前存在0个web动态对象,heroku python API似乎会抛出一个关键错误。为了避免这两种情况,请不要缩小到0 dynos。

这个答案非常详细。非常感谢您一直以来的投资。非常感谢。。。我当然接受你的回答谢谢!:)我很高兴这有帮助。谁知道呢,也许其他人也会觉得它很有用;)我的同事向Heroku支持人员询问了这一点,他们说这会起作用,但不建议使用Heroku Scheduler,因为这是一项“尽力而为”的服务,这意味着它不能保证运行或可能运行多次。