我编写了一个HTTP触发器,该触发器以ECG数据库名称和记录号为参数,从云存储中读取记录,计算参数并将其写入Firestore。我观察到一件非常奇怪的事情,代码在控制台中没有指明原因就崩溃了。这就是我在控制台中得到的全部:
函数执行耗时58017毫秒,完成时状态为:"崩溃"。
它通常在从云存储读取记录时停止。我正在使用MIT-BIH云存储来读取记录。
from google.cloud import storage
from flask import escape
import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore
import numpy as np
import os
from pathlib import Path
from os import listdir
from os.path import isfile, join
from random import randint
def GCFname(request):
recordno = request.args['recordno']
database = request.args['database']
client = storage.Client()
bucket = client.get_bucket('bucket_name')
# it crashes here
record = wfdb.rdrecord(recordno, channels=[0],pb_dir='mitdb')
sig = record.p_signal[:,0]
test_qrs = processing.gqrs_detect(record.p_signal[:,0], fs=record.fs)
ann_test= wfdb.rdann(recordno, 'atr',pb_dir='mitdb')
##Calculate Parameters
cred = credentials.ApplicationDefault()
firebase_admin.initialize_app(cred, {
'projectId': 'project_name',
})
db = firestore.client()
doc_ref = db.collection('xyz').document(database).collection('abc').document(recordno)
doc_ref.set({
u'fieldname': fieldvalue
})
我已经使用CCD_ 1进行了部署,gcloud functions deploy GCFname --runtime python37 --trigger-http --allow-unauthenticated --timeout 540s
但是在一段时间后使用相同的URL时,它是有效的。这可能是什么原因?这绝对不是超时问题。
如果没有日志,很难理解云函数崩溃的原因,因为原因有很多。目前,在刷新日志条目或向Stackdriver写入任何错误跟踪之前,有一个漏洞会导致云函数崩溃。您可以在此处关注此问题跟踪器以获取任何更新:https://issuetracker.google.com/155215191