如何用Python编写自动脚本?

时间:2018-06-01 10:03:40

标签: python python-2.7

我使用传感器在AWS::ApplicationAutoScaling::ScalableTarget上获得了温度,压力和高度读数:

  1. 问题是,要查看结果,我必须每次都自己执行 SecIndexWriteCapacity: Type: AWS::ApplicationAutoScaling::ScalableTarget Properties: MaxCapacity: 1000 MinCapacity: 15 ResourceId: !Sub "table/${MY_MAIN_TABLE}/index/${MY_SECONDARY_INDEX_NAME}" RoleARN: !GetAtt ScalingRole.Arn ScalableDimension: dynamodb:index:WriteCapacityUnits ServiceNamespace: dynamodb SecIndexReadCapacity: Type: AWS::ApplicationAutoScaling::ScalableTarget Properties: MaxCapacity: 1000 MinCapacity: 15 ResourceId: !Sub "table/${MY_MAIN_TABLE}/index/MY_SECONDARY_INDEX_NAME" RoleARN: !GetAtt ScalingRole.Arn ScalableDimension: dynamodb:index:ReadCapacityUnits ServiceNamespace: dynamodb SecIndexWriteScalingPolicy: Type: AWS::ApplicationAutoScaling::ScalingPolicy Properties: PolicyName: SecIndexWriteScalingPolicy PolicyType: TargetTrackingScaling ScalingTargetId: !Ref SecIndexWriteCapacity TargetTrackingScalingPolicyConfiguration: TargetValue: 50.0 ScaleInCooldown: 30 ScaleOutCooldown: 1 PredefinedMetricSpecification: PredefinedMetricType: DynamoDBWriteCapacityUtilization SecIndexReadScalingPolicy: Type: AWS::ApplicationAutoScaling::ScalingPolicy Properties: PolicyName: SecIndexReadScalingPolicy PolicyType: TargetTrackingScaling ScalingTargetId: !Ref SecIndexReadCapacity TargetTrackingScalingPolicyConfiguration: TargetValue: 50.0 ScaleInCooldown: 30 ScaleOutCooldown: 0 PredefinedMetricSpecification: PredefinedMetricType: DynamoDBReadCapacityUtilization 。我试图以某种方式自动化它,所以它将继续运行我想要的时间。
  2. 一旦自动完成,想在一段时间后保存结果并分析输出。
  3. 有没有办法可以为这两个任务编写代码?

    谢谢。

3 个答案:

答案 0 :(得分:2)

这里需要两件事。首先是一个脚本,即code.py,用于在过程中记录temperature, pressure, and altitude读数等功能行为以及错误/响应。另一个是脚本执行日志,即在预定时间内成功或失败以及其他系统日志。

对于第一份工作,您必须自己做,但要确保有一个logger模块来记录流程。

对于第二个作业,您可以将OS提供的调度程序crontab用于基于Linux的操作系统。例如,每分钟执行一次脚本

* * * * * python /home/script/code.py > /home/script/code.log 2>&1

有关计划程序作业的更多信息,请参阅here

答案 1 :(得分:0)

时间模块是你的朋友。您可以使用while True:设置无限循环,并在循环结束时使用time.sleep(secs)(在输出之后)。

答案 2 :(得分:0)

我会使用这样的附加控制器脚本:

import subprocess;
import time;
import sys;

x = True;
while x:
    while exit_code!=0:
        try:
            exit_code = subprocess.check_call(['python', 'collect_data.py', '-cli_args_if_needed']);
        except:
            print(sys.exec_info()[1]);
            print('Relaunching in 5 seconds');
            time.sleep(5)