簡體   English   中英

捕捉 Firebase 504 網關超時

[英]Catching Firebase 504 gateway timeout

我正在構建一個簡單的 IOT 設備(帶有 Raspberry Pi Zero),它每 1 秒從 Firebase 實時數據庫中提取數據並檢查更新。

但是,在一段時間后(不確定具體多少,但在 1 小時到 3 小時之間),程序退出並顯示504 Server Error: Gateway Time-out消息。 我不明白為什么會發生這種情況,我試圖通過斷開 Pi 與互聯網的連接來重新創建此錯誤,但我沒有收到此消息。 相反,程序只是在ref.get()行中暫停,並在連接恢復后自動恢復運行。

該設備應始終開啟,因此理想情況下,如果我遇到某種錯誤,我想重新啟動程序/重新啟動連接/重新啟動 Pi。 有沒有辦法實現這樣的目標?

似乎該消息實際上是由 firebase_admin package 生成的。

這是錯誤消息:

Traceback (most recent call last):
  File "/home/pi/.local/lib/python3.7/site-packages/firebase_admin/db.py", line 944, in request
    return super(_Client, self).request(method, url, **kwargs)
  File "/home/pi/.local/lib/python3.7/site-packages/firebase_admin/_http_client.py", line 105, in request
    resp.raise_for_status()
  File "/usr/lib/python3/dist-packages/requests/models.py", line 940, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 504 Server Error: Gateway Time-out for url: https://someFirebaseProject.firebaseio.com/someRef/subSomeRef/payload.json

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/pi/Desktop/project/main.py", line 94, in <module>
    lastUpdate = ref.get()['lastUpdate']
  File "/home/pi/.local/lib/python3.7/site-packages/firebase_admin/db.py", line 223, in get
    return self._client.body('get', self._add_suffix(), params=params)
  File "/home/pi/.local/lib/python3.7/site-packages/firebase_admin/_http_client.py", line 117, in body
    resp = self.request(method, url, **kwargs)
  File "/home/pi/.local/lib/python3.7/site-packages/firebase_admin/db.py", line 946, in request
    raise _Client.handle_rtdb_error(error)
firebase_admin.exceptions.UnknownError: Internal server error.
>>> 

要重新啟動整個 Raspberry Pi,您只需運行 shell 命令:

import os
os.system("sudo reboot")

我也遇到過這個問題,通常感覺更安全,但也有明顯的缺點。 我會嘗試以類似的方式重置 wifi 連接或網絡接口

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM