第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

大集合的 Firestore DeadlineExceeded 異常

大集合的 Firestore DeadlineExceeded 異常

Go
瀟瀟雨雨 2023-05-08 15:15:38
我正在嘗試從 Google Firestore 讀取更大的集合以進行測試和存檔。當我嘗試從包含超過 6k 文檔的集合中獲取所有文檔時,我遇到了一些有趣的錯誤。樸素的 Python 解決方案我的第一次嘗試是使用 Python google-cloud-firestore(0.30.0 版)庫。source_client = firestore.Client()source = source_client.collection(collection)source_data = source.get()counter = 0for f in source_data:    app.logger.info(f.id)    counter += 1    if counter % 100 == 0:        app.logger.info('%s %d', datetime.now(), counter)    app.logger.info('%s Finally read all %d documents', datetime.now(), counter)給出以下輸出:INFO:flask.app:2018-11-08 09:49:03.923795 6400  INFO:flask.app:2018-11-08 09:49:04.115410 6500  ... INFO:flask.app:2018-11-08 09:49:03.923795 6400INFO:flask.app:2018-11-08 09:49:04.115410 6500WARNING:flask.app:2018-11-08 09:49:04.128478 copy brocken by exceptionTraceback (most recent call last):  File "/home/carsten/projects/transfertool/venv/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__    return self.wsgi_app(environ, start_response)  File "/home/carsten/projects/transfertool/venv/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app    response = self.handle_exception(e)  File "/home/carsten/projects/transfertool/venv/lib/python3.6/site-packages/flask/app.py", line 1741, in handle_exception    reraise(exc_type, exc_value, tb)  File "/home/carsten/projects/transfertool/venv/lib/python3.6/site-packages/flask/_compat.py", line 35, in reraise    raise value  File "/home/carsten/projects/transfertool/venv/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app    response = self.full_dispatch_request()  File "/home/carsten/projects/transfertool/venv/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request    rv = self.handle_user_exception(e)  File "/home/carsten/projects/transfertool/venv/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception    reraise(exc_type, exc_value, tb)這似乎是由配額引起的。即使我在這里看不到它。這似乎是基于時間的,因為當我在元素之間進行少量睡眠時,我的吞吐量會減少,并在 ~50 秒后出現(xiàn)異常。
查看完整描述

2 回答

?
慕標琳琳

TA貢獻1830條經(jīng)驗 獲得超9個贊

在 firebase 支持團隊的幫助下,我們發(fā)現(xiàn) python 客戶端 api 確實存在錯誤。下一個版本中有一個錯誤修正。很可能它將使 python 庫能夠按 documentid 排序,因此使用start_after().

到那時你有兩種可能的解決方案:

  1. 使用另一個字段進行排序和使用start_after()

  2. 將 node.js 庫與分頁一起使用,例如:

var db = admin.firestore();

admin.firestore().settings({ timestampsInSnapshots: true });

function readNextPage(lastReadDoc) {

  let query = db

    .collection(collection)

    .orderBy(admin.firestore.FieldPath.documentId())

    .limit(100);

}


查看完整回答
反對 回復 2023-05-08
?
暮色呼如

TA貢獻1853條經(jīng)驗 獲得超9個贊

在我的例子中,我在獲取整個集合時遇到了這個錯誤。它甚至不是那么大的集合,但我猜集合中的文件很大。我做了分頁更新。這是一個節(jié)點 firebase 函數(shù):


let lastReadDoc = false;



let lastDoc: string = '';

  const limitRecordCount = 10;

  do {

    await db

      .collection('something/' + somethingId + '/somethingcollection')

      .orderBy('id')

      .limit(limitRecordCount)

      .startAfter(lastDoc)

      .get()

      .then((snapshot: any) => {

        let counter = 0;

        snapshot.docs.forEach((doc: any) => {

          const docData = doc.data();

          if (lastDoc !== docData.id) {

            lastDoc = docData.id;

            counter = counter + 1;

          }

          // ***********************

          // business logic per doc here

          // ***********************

        });

        if (counter < limitRecordCount) {

          lastReadDoc = true;

        }

      })

      .catch((err: any) => {

        lastReadDoc = true;

        console.log('Error getting booking documents', err);

      });

  } while (lastReadDoc === false);


查看完整回答
反對 回復 2023-05-08
  • 2 回答
  • 0 關注
  • 207 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號