Привет сообществу StackOverflow. Я пытаюсь развернуть функции Firebase, написанные на Python, из проекта React-Native.
Мой фрагмент кода выглядит так:
from firebase_functions import firestore_fn, https_fn
import fitz
import re
import requests
import io
from datetime import datetime
# The Firebase Admin SDK to access Cloud Firestore.
from firebase_admin import initialize_app, firestore, credentials, storage
import google.cloud.firestore
from google.cloud import storage as Storage
from google.oauth2 import service_account
from uuid import uuid4
cred = credentials.Certificate("link_to_my_certificate.json")
app = initialize_app(cred,{'storageBucket':'my_project_name.appspot.com'})
@https_fn.on_request()
def printHello(req: https_fn.Request) -> https_fn.Response:
https_fn.Response("Hello from Firebase functions", status=200)
Я их протестировал:
tsc --смотреть
эмуляторы Firebase: start --only функции
Он работает отлично, и после этого я пытаюсь их развернуть и получаю такой результат:
knswrw@MacBook functions % firebase deploy --only functions
=== Deploying to 'my_project_name'...
i deploying functions
i functions: preparing codebase default for deployment
i functions: ensuring required API cloudfunctions.googleapis.com is enabled...
i functions: ensuring required API cloudbuild.googleapis.com is enabled...
i artifactregistry: ensuring required API artifactregistry.googleapis.com is enabled...
✔ artifactregistry: required API artifactregistry.googleapis.com is enabled
✔ functions: required API cloudbuild.googleapis.com is enabled
✔ functions: required API cloudfunctions.googleapis.com is enabled
i functions: Loading and analyzing source code for codebase default to determine what to deploy
* Serving Flask app 'serving'
* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on http://127.0.0.1:8082
Press CTRL+C to quit
127.0.0.1 - - [14/Sep/2023 12:34:11] "GET /__/functions.yaml HTTP/1.1" 200 -
127.0.0.1 - - [14/Sep/2023 12:34:11] "GET /__/quitquitquit HTTP/1.1" 200 -
/bin/sh: line 1: 75256 Terminated: 15 python3.11 "/Users/knswrw/Desktop/Project/firebase/functions/venv/lib/python3.11/site-packages/firebase_functions/private/serving.py"
i functions: preparing functions directory for uploading...
i functions: packaged /Users/knswrw/Desktop/Project/firebase/functions (14.13 KB) for uploading
i functions: ensuring required API run.googleapis.com is enabled...
i functions: ensuring required API eventarc.googleapis.com is enabled...
i functions: ensuring required API pubsub.googleapis.com is enabled...
i functions: ensuring required API storage.googleapis.com is enabled...
✔ functions: required API pubsub.googleapis.com is enabled
✔ functions: required API run.googleapis.com is enabled
✔ functions: required API eventarc.googleapis.com is enabled
✔ functions: required API storage.googleapis.com is enabled
i functions: generating the service identity for pubsub.googleapis.com...
i functions: generating the service identity for eventarc.googleapis.com...
✔ functions: functions folder uploaded successfully
i functions: creating Python 3.11 (2nd Gen) function printHello(us-central1)...
Could not create or update Cloud Run service printhello, Container Healthcheck failed. Revision 'printhello-00001-wev' is not ready and cannot serve traffic. The user-provided container failed to start and listen on the port defined provided by the PORT=8080 environment variable. Logs for this revision might contain more information.
Logs URL: https://console.cloud.google.com/logs/viewer?project=my_project_name&resource=cloud_run_revision/service_name/printhello/revision_name/printhello-00001-wev&advancedFilter=resource.type%3D%22cloud_run_revision%22%0Aresource.labels.service_name%3D%22printhello%22%0Aresource.labels.revision_name%3D%22printhello-00001-wev%22
For more troubleshooting guidance, see https://cloud.google.com/run/docs/troubleshooting#container-failed-to-start
Functions deploy had errors with the following functions:
printHello(us-central1)
i functions: cleaning up build files...
Error: There was an error deploying functions
Я пытался поискать эту тему в Интернете, но не нашел ответа на свой вопрос.
Буду рад любому ответу, любому объяснению и любому совету.
Спасибо.
ОТРЕДАКТИРОВАНО: Возникла проблема с библиотекой fitz из Pymupdf (я использую ее при импорте выше).
Вопрос следующий, теперь измененный:
Как импортировать библиотеку в Python для функций Firebase? Как его правильно установить? И как развернуть функции?






Я нашел решение своей проблемы, проверив файл firebase-debug.log. Похоже, возникла проблема с библиотекой «fitz» из Pymupdf, которую я импортировал в свой код.
Возникла проблема с библиотекой fitz из Pymupdf (я использую ее в импорт выше)
Первоначально я добавил библиотеку в свои функции Python Firebase, используя следующую команду:
pip3 install -t _directoryName _moduleName
Однако оказывается, что это был неправильный подход.
Я столкнулся с проблемами развертывания и получил такое сообщение об ошибке:
Дополнительные инструкции по устранению неполадок см. https://cloud.google.com/run/docs/troubleshooting#container-failed-to-start Не удалось создать или обновить имя функции службы Cloud Run. Не удалось выполнить проверку работоспособности контейнера. Версия «FunctionName-00001-wus» не готова и не может обслуживать трафик. Предоставленный пользователем контейнер не смог запуститься и прослушивать порт, определенный переменной среды PORT=8080. Журналы этой версии могут содержать дополнительную информацию.
Изучив журналы, я заметил, что проблема связана с оператором import fitz в моем коде.
Импортировать фитц
Чтобы решить эту проблему, я выполнил следующие шаги:
Удалите каталог «venv».
Добавьте библиотеки, которые хотите использовать, в файл «requirements.txt».
Воссоздайте виртуальную среду с помощью Python 3.11, используя следующие команды:
python3.11 -m venv venv
source venv/bin/activate
pip3 install --upgrade pip
python3.11 -m pip install -r requirements.txt
Напишите свои функции Firebase.
Наконец, выполните следующие действия для развертывания:
tsc —watch
firebase emulators:start --only functions
firebase deploy
Вот и все! Теперь ваше развертывание должно работать гладко.
% tsc — ошибка наблюдения TS6231: не удалось разрешить путь «—watch» с расширениями: «.ts», «.tsx», «.d.ts», «.cts», «.d.cts», « .mts», «.d.mts». Файл находится в программе, потому что: Для компиляции указан корневой файл.
Как устранить эту ошибку??