当前位置: 首页 > 知识库问答 >
问题:

Firebase Functions在客户端提供10s后的超时

贡建修
2023-03-14

我正在使用GetHttpScalable调用Android上的云函数,但如果需要超过10秒,则该函数返回FireBaseFunctionsException:deadline_excepederror。当我在firebase(服务器端)上检查时,它显示功能完成(没有任何错误)。

dependencies {
    // 
    implementation 'com.google.firebase:firebase-functions:18.0.0'
    implementation 'com.google.firebase:firebase-core:17.0.0'
    implementation 'com.google.firebase:firebase-auth:18.0.0'
    implementation 'com.google.firebase:firebase-storage:18.0.0'
}

她是我的职责,

HttpsCallableReference ref = mFunctions.getHttpsCallable("myFirebaseFunction");
ref.setTimeout(600, TimeUnit.SECONDS);
ref.call(Data)
    .addOnSuccessListener(new OnSuccessListener<HttpsCallableResult>() {
                @Override
                public void onSuccess(HttpsCallableResult httpsCallableResult) {
                    Gson jsonData = new Gson();
                    String json = jsonData.toJson(httpsCallableResult.getData());
                }
            })
            .addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    e.printStackTrace();
                }
            });

下面是堆栈跟踪日志,

更新:Firebase控制台日志

 [
 {
   "textPayload": "Function execution took 37358 ms, finished with status code: 200",
   "insertId": "000000-a5fca827-1905-4416-b053-206981a2e5a7",
   "resource": {
     "type": "cloud_function",
     "labels": {
       "function_name": "getBookContentByIdAndDate_v2",
       "project_id": "apotex360",
       "region": "us-central1"
     }
   },
   "timestamp": "2019-07-11T14:23:51.509329740Z",
   "severity": "DEBUG",
   "labels": {
     "execution_id": "5zxmtpmy8gho"
   },
   "logName": "projects/apotex360/logs/cloudfunctions.googleapis.com%2Fcloud-functions",
   "trace": "projects/apotex360/traces/98f9c62f094ff33f4e0524c9231fe126",
   "receiveTimestamp": "2019-07-11T14:23:57.750633081Z"
 },
 {
   "textPayload": "stream finished",
   "insertId": "000000-914deed7-d813-4f86-93d8-7f72d3377e1c",
   "resource": {
     "type": "cloud_function",
     "labels": {
       "project_id": "apotex360",
       "region": "us-central1",
       "function_name": "getBookContentByIdAndDate_v2"
     }
   },
   "timestamp": "2019-07-11T14:23:51.506Z",
   "severity": "INFO",
   "labels": {
     "execution_id": "5zxmtpmy8gho"
   },
   "logName": "projects/apotex360/logs/cloudfunctions.googleapis.com%2Fcloud-functions",
   "trace": "projects/apotex360/traces/98f9c62f094ff33f4e0524c9231fe126",
   "receiveTimestamp": "2019-07-11T14:23:57.750633081Z"
 },
 {
   "textPayload": "Function execution started",
   "insertId": "000000-409caeb7-96cd-4d27-b2b7-ed0546f919be",
   "resource": {
     "type": "cloud_function",
     "labels": {
       "project_id": "apotex360",
       "region": "us-central1",
       "function_name": "getBookContentByIdAndDate_v2"
     }
   },
   "timestamp": "2019-07-11T14:23:14.151990344Z",
   "severity": "DEBUG",
   "labels": {
     "execution_id": "5zxmtpmy8gho"
   },
   "logName": "projects/apotex360/logs/cloudfunctions.googleapis.com%2Fcloud-functions",
   "trace": "projects/apotex360/traces/98f9c62f094ff33f4e0524c9231fe126",
   "receiveTimestamp": "2019-07-11T14:23:20.439670300Z"
 }
]

是不是我错过了什么?我真的很感激任何帮助。

共有1个答案

阚小云
2023-03-14

这是Android客户端库中关于OKHTTP可用的不同超时类型的bug。您可以在此处阅读有关该修复程序的信息:

https://github.com/firebase/firebase-android-sdk/issues/604

 类似资料:
  • 我使用的是Elasticsearch 5.2和Spring Boot 1.5.1。我通过一个Spring应用程序中的Java客户端连接到它。当我在端口或上连接到它时,得到。在我的Java客户机中,我将属性设置为。通过端口9200上的cURL向它发送请求时,它工作正常。我在一个集群中有4个节点,我不能连接到其中任何一个。我的配置文件具有分部中的所有默认值,但除外,后者的值为。 我在用Gradle。我

  • 我在我的项目中使用SQL服务器,我试图在两个时间戳之间检索表中的条目。表的架构如下所示: 我需要获取在特定时间戳和当前时间戳之后添加的条目。为此,我尝试了下面提到的查询: 当在SQL客户机上直接执行这个查询时,我得到了所有预期的结果。但是当我从Java JDBC客户端执行相同的查询时,< code>resultset包含的条目的ADDED_TIME等于parameter1。 下面是客户端的Java

  • 我正在使用Apache HTTP客户端联系外部服务。这项服务可能需要几个小时(如果不是更长的话)才能产生响应。我尝试了一些不同的方法,但要么以套接字结束,要么以读取超时结束。我刚刚尝试使用RequestConfig将套接字和连接超时设置为0,根据文档,这应该是无限的,但请求总是在1小时后返回。有什么想法吗?

  • 我想使用远程过程调用(RPC)开发一个Qt5/C客户机-服务器应用程序。 想法:服务器监听多个客户端的传入连接。客户机提供了一组服务器可以调用的过程/服务,以便从客户机收集数据并将更改通知其他客户机。 这里有一个问题:到目前为止,我看到的RPC库似乎期望服务器提供客户端可能调用的服务。但我想做相反的事情。客户端应该提供服务器可能调用的服务。方向很重要,因为我想只在服务器端启用端口转发,而不是在客户

  • 我们有一个在windows server 2012上运行的自定义凭据提供程序,它在允许用户登录之前调用身份验证服务器的API。我们也在维护我们的凭证提供者的日志。 我们现在需要捕获并记录使用远程桌面连接登录服务器的用户的IP地址。是否可以从凭证提供者内部捕获IP地址?RDP客户端发送到服务器的序列化凭据包是否包含此信息?如果是,如何在凭据提供程序中访问它?

  • 问题内容: 如何在Go HTTP客户端中使空闲超时? 空闲超时意味着从HTTP客户端内部调用Conn接口的Read / Write方法时发生超时。当客户端下载文件并且由于读取超时而导致下载失败时,此功能很有用。 问题答案: 您需要创建自己的,并返回,以设置适当的读写期限。 该会是这个样子: