当我的GAE
服务器与EC2 REST
服务器通信时,我遇到了这个60秒的超时问题。在GAE
方面,我的任务是上传csv
文件,解析其信息并将每一行作为请求发送到REST
服务器。我使用多个线程和任务队列来减少请求时间,但是当文件很大时仍然会超时。以下是我的代码示例,我感谢任何建议。
from threading import Thread
import Queue
thread_count = 10 #the number of theading
job_q = Queue.Queue() #a job queue
def html_table(row_inp_all):
while True:
row_inp_temp_all = row_inp_all.get()
all_dic = {"row_inp_temp_all": row_inp_temp_all}
data = json.dumps(all_dic)
url=url_part1 + '/przm/' + jid
response = urlfetch.fetch(url=url, payload=data, method=urlfetch.POST, headers=http_headers, deadline=60)
output_val = json.loads(response.content)['result']
def loop_html(thefile):
reader = csv.reader(thefile.file.read().splitlines())
header = reader.next()
for row in reader:
job_q.put(row)
all_threads = [Thread(target=html_table, args=(job_q, )) for j in range(thread_count)]
for x in all_threads:
x.start()
for x in all_threads:
job_q.put(None)
for x in all_threads:
x.join()
答案 0 :(得分:0)
对于60秒的任何请求都有一个硬限制,如果你想要更多的时间,你应该使用Task Queues API,它可以在后台运行长达10分钟,这在你的情况下应该足够了
在深入了解任务队列之前,您可以尝试实际使用任务队列API的background work with the deferred library,但可以更轻松地使用它。