firebase-admin-python icon indicating copy to clipboard operation
firebase-admin-python copied to clipboard

raise exceptions.from_grpc_error(exc) from exc google.api_core.exceptions.Unknown: None Stream removed

Open j8741231j opened this issue 1 year ago • 1 comments

I am developing a web project with Django.

I use Firebase's Firestore as my database.

Look at the views.py "def mail(request)" you can see I get data from firestore and render to 'mail.html'

And I go to http://127.0.0.1:8000/resource/mail/ is normal.

But if I do nothing lasts 5 minutes and reorganize this page, I will get this error on my web.

I think my problem like this https://stackoverflow.com/questions/70446165/firestore-stream-removed-error-after-3-minutes-doing-nothing ,although it is .NET and my project is python.

Anyway the website is very normal at first,but after maybe 3~5 minutes it get error.

    Unknown at /resource/mail/
    None Stream removed
    Request Method:	GET
    Request URL:	http://127.0.0.1:8000/resource/mail/
    Django Version:	4.0.6
    Exception Type:	Unknown
    Exception Value:	
    None Stream removed
    Exception Location:	C:\Users\USER\.conda\envs\Backstage\lib\site-packages\google\api_core\grpc_helpers.py, line 144, in error_remapped_callable
    Python Executable:	C:\Users\USER\.conda\envs\Backstage\python.exe
    Python Version:	3.9.12
    Python Path:	
    ['C:\\Users\\USER\\Desktop\\官網+後台\\Backstage',
    'C:\\Users\\USER\\.conda\\envs\\Backstage\\python39.zip',
    'C:\\Users\\USER\\.conda\\envs\\Backstage\\DLLs',
    'C:\\Users\\USER\\.conda\\envs\\Backstage\\lib',
    'C:\\Users\\USER\\.conda\\envs\\Backstage',
    'C:\\Users\\USER\\.conda\\envs\\Backstage\\lib\\site-packages']
    Server time:	Fri, 05 Aug 2022 17:01:33 +0800


    Traceback Switch to copy-and-paste view
    C:\Users\USER\.conda\envs\Backstage\lib\site-packages\google\api_core\grpc_helpers.py, line 140, in error_remapped_callable
                return _StreamingResponseIterator( …
    Local vars
    C:\Users\USER\.conda\envs\Backstage\lib\site-packages\google\api_core\grpc_helpers.py, line 66, in __init__
                    self._stored_first_result = next(self._wrapped) …
    Local vars
    C:\Users\USER\.conda\envs\Backstage\lib\site-packages\grpc\_channel.py, line 426, in __next__
            return self._next() …
    Local vars
    C:\Users\USER\.conda\envs\Backstage\lib\site-packages\grpc\_channel.py, line 826, in _next
                        raise self …
    Local vars
    The above exception (<_MultiThreadedRendezvous of RPC that terminated with: status = StatusCode.UNKNOWN details = "Stream removed" debug_error_string = "{"created":"@1659690093.393000000","description":"Error received from peer ipv4:172.217.163.42:443","file":"src/core/lib/surface/call.cc","file_line":967,"grpc_message":"Stream removed","grpc_status":2}" >) was the direct cause of the following exception:
    C:\Users\USER\.conda\envs\Backstage\lib\site-packages\django\core\handlers\exception.py, line 55, in inner
                    response = get_response(request) …
    Local vars
    C:\Users\USER\.conda\envs\Backstage\lib\site-packages\django\core\handlers\base.py, line 197, in _get_response
                    response = wrapped_callback(request, *callback_args, **callback_kwargs) …
    Local vars
    C:\Users\USER\Desktop\官網+後台\Backstage\myproject\views\resource.py, line 36, in mail
        for doc in docs: …
    Local vars
    C:\Users\USER\.conda\envs\Backstage\lib\site-packages\google\cloud\firestore_v1\query.py, line 273, in stream
            response_iterator, expected_prefix = self._get_stream_iterator( …
    Local vars
    C:\Users\USER\.conda\envs\Backstage\lib\site-packages\google\cloud\firestore_v1\query.py, line 218, in _get_stream_iterator
            response_iterator = self._client._firestore_api.run_query( …
    Local vars
    C:\Users\USER\.conda\envs\Backstage\lib\site-packages\google\cloud\firestore_v1\services\firestore\client.py, line 1237, in run_query
            response = rpc( …
    Local vars
    C:\Users\USER\.conda\envs\Backstage\lib\site-packages\google\api_core\gapic_v1\method.py, line 154, in __call__
            return wrapped_func(*args, **kwargs) …
    Local vars
    C:\Users\USER\.conda\envs\Backstage\lib\site-packages\google\api_core\retry.py, line 283, in retry_wrapped_func
                return retry_target( …
    Local vars
    C:\Users\USER\.conda\envs\Backstage\lib\site-packages\google\api_core\retry.py, line 190, in retry_target
                return target() …
    Local vars
    C:\Users\USER\.conda\envs\Backstage\lib\site-packages\google\api_core\grpc_helpers.py, line 144, in error_remapped_callable
                raise exceptions.from_grpc_error(exc) from exc …
    Local vars

urls.py:

    from django.contrib import admin
    from django.urls import path
    from myproject.views import *

    urlpatterns = [
        path('admin/', admin.site.urls),
        path('signup/', signup,name='signup'),#註冊
        path('login/', login),#登入
        path('index/', index),#主頁
        path('tradeQuery/', tradequery),#交易狀態查詢
        path('resource/mail/', mail),#送禮系統


]

views.py:

    def mail(request):
      docs=FirestoreManager.getDocsWhereTime("BackendLog-Mail") 
      for doc in docs:
          print(doc.to_dict())
      return render(request, 'mail.html', locals())

FirestoreManager.py:

    def getDocsWhereTime(*args): # 傳入參數為 collection_name,start_time,end_time
      if len(args)>0:
          collection_name=args[0]
      if len(args)>1:
          start_time=args[1]
      else:
          start_time=datetime(2022,8,1).astimezone(timezone(offset=timedelta(hours=8)))
      if len(args)>2:
          end_time=args[2]
      else:
          end_time=datetime.now(tz=timezone(timedelta(hours=8)))
      docs = db.collection(collection_name).where("CreateTime", '>=', start_time).where("CreateTime", "<", end_time).stream()
      return docs

requirements.txt:

    Django==4.0.6
    firebase-admin==5.1.0
    google-api-core==2.8.2
    google-api-python-client==2.55.0
    google-auth==2.9.1
    google-auth-httplib2==0.1.0
    google-cloud-core==2.3.2
    google-cloud-firestore==2.6.0
    google-cloud-storage==2.4.0
    google-crc32c==1.3.0
    google-resumable-media==2.3.3
    googleapis-common-protos==1.56.4
    grpcio==1.47.0

cmd console:

    Internal Server Error: /resource/mail/
    Traceback (most recent call last):
      File "C:\Users\USER\.conda\envs\Backstage\lib\site-packages\google\api_core\grpc_helpers.py", line 140, in error_remapped_callable
        return _StreamingResponseIterator(
      File "C:\Users\USER\.conda\envs\Backstage\lib\site-packages\google\api_core\grpc_helpers.py", line 66, in __init__
        self._stored_first_result = next(self._wrapped)
      File "C:\Users\USER\.conda\envs\Backstage\lib\site-packages\grpc\_channel.py", line 426, in __next__
        return self._next()
      File "C:\Users\USER\.conda\envs\Backstage\lib\site-packages\grpc\_channel.py", line 826, in _next
        raise self
    grpc._channel._MultiThreadedRendezvous: <_MultiThreadedRendezvous of RPC that terminated with:
            status = StatusCode.UNKNOWN
            details = "Stream removed"
            debug_error_string = "{"created":"@1659690093.393000000","description":"Error received from peer ipv4:172.217.163.42:443","file":"src/core/lib/surface/call.cc","file_line":967,"grpc_message":"Stream removed","grpc_status":2}"
    >
    
    The above exception was the direct cause of the following exception:
    
    Traceback (most recent call last):
      File "C:\Users\USER\.conda\envs\Backstage\lib\site-packages\django\core\handlers\exception.py", line 55, in inner
        response = get_response(request)
      File "C:\Users\USER\.conda\envs\Backstage\lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
        response = wrapped_callback(request, *callback_args, **callback_kwargs)
      File "C:\Users\USER\Desktop\官網+後台\Backstage\myproject\views\resource.py", line 36, in mail
        for doc in docs:
      File "C:\Users\USER\.conda\envs\Backstage\lib\site-packages\google\cloud\firestore_v1\query.py", line 273, in stream
        response_iterator, expected_prefix = self._get_stream_iterator(
      File "C:\Users\USER\.conda\envs\Backstage\lib\site-packages\google\cloud\firestore_v1\query.py", line 218, in _get_stream_iterator
        response_iterator = self._client._firestore_api.run_query(
      File "C:\Users\USER\.conda\envs\Backstage\lib\site-packages\google\cloud\firestore_v1\services\firestore\client.py", line 1237, in run_query
        response = rpc(
      File "C:\Users\USER\.conda\envs\Backstage\lib\site-packages\google\api_core\gapic_v1\method.py", line 154, in __call__
        return wrapped_func(*args, **kwargs)
      File "C:\Users\USER\.conda\envs\Backstage\lib\site-packages\google\api_core\retry.py", line 283, in retry_wrapped_func
        return retry_target(
      File "C:\Users\USER\.conda\envs\Backstage\lib\site-packages\google\api_core\retry.py", line 190, in retry_target
        return target()
      File "C:\Users\USER\.conda\envs\Backstage\lib\site-packages\google\api_core\grpc_helpers.py", line 144, in error_remapped_callable
        raise exceptions.from_grpc_error(exc) from exc
    google.api_core.exceptions.Unknown: None Stream removed
    [05/Aug/2022 17:01:33] "GET /resource/mail/ HTTP/1.1" 500 125693

j8741231j avatar Aug 05 '22 03:08 j8741231j

I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight.

google-oss-bot avatar Aug 05 '22 03:08 google-oss-bot