[英]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.