【发布时间】:2019-01-27 17:52:15
【问题描述】:
以下是我的 python 代码,我尝试运行 2 个 https 请求,第一个启动我的 databrick 集群。由于集群启动大约需要 2 分钟,我试图让 time.sleep 2 分钟,然后提交我的第二个 https 以运行 databricks 作业。这些是从我的 AWS Lambda 运行的。我也尝试过使用 AWS Step 功能,但遇到了不同的错误,因此决定使用 lambda。
from __future__ import print_function
import json
import boto3
import time
import urllib
import re
import pymysql
import sys
import requests
import base64
import time
s3 = boto3.client('s3')
domain = 'mydatabricks.cloud.databricks.com'
tokenStr = 'token:tokenstr'
def lambda_handler(event, context):
response = requests.post('https://%s/api/2.0/clusters/start' % (domain),
headers = {"Authorization": "Basic " + base64.standard_b64encode(tokenStr)},
json = {"cluster_id": "ddddd-sss23-2232323"})
seconds = 200
time.sleep(seconds)
if response.status_code == 200:
print("slept for seconds : ", str(seconds))
print("Cluster started / completed successfully ***************")
else:
print ("Error in starting cluster !!!!!!!!!!!!!! %s: %s" % (response.json()["error_code"], response.json()["message"]))
#time.sleep(180)
while True:
try:
response2 = requests.post('https://%s/api/2.0/jobs/run-now' % (domain),
headers = {"Authorization": "Basic " + base64.standard_b64encode(tokenStr)},
json = {"job_id": 12345})
except Exception as e:
print(e)
time.sleep(180)
# if response2.status_code == "INVALID_STATE":
# print("Job started / completed successfully ***************")
#else:
# print ("Error in running the job 28885 !!!!!!!!!!!!!! %s: %s" % (response2.json()["error_code"], response2.json()["message"]))
上面的错误信息是:
2018-08-21T13:47:26.542Z baa565b5-a548-11e8-9585-8d99dc1af95e Task timed out after 3.00 seconds
请帮助如何以第一个请求的间隔/状态提交 2 个 https 请求。谢谢
【问题讨论】:
-
睡眠几乎总是延迟某些任务完成的错误解决方案。相反,应该在完成后发送一些信号。您可能应该查看队列,包括外部队列和内存队列。
标签: python python-2.7 amazon-web-services aws-lambda