How to build google cloud serverless function for processing unprocess data from firebase

邮差的信 提交于 2021-02-17 06:43:22

问题


I am having a problem while creating a serverless google cloud function

I need to write a Google Cloud Function in Python to run this script that will process unprocessed firebase raw data

I already deployed it on GCP but on triggering it is trowing:

error request cannot handle

I want to run the script serverless to avoid it from manually running every day

Can anyone help me out with this


    def process_session(self, session, utc_offset=0):
        s = {}
        try:
            edfbyte, analysis = process_session(session, utc_offset)
            report_json, quality = process_analysis(analysis, session.ref.id)
            # save the EDF
            path = 'Users/' + session.ref.get("uid") + '/session-' + session.ref.get("sessionId") + '.edf'
            path_report = 'Users/' + session.ref.get("uid") + '/session-' + session.ref.get("sessionId") + '.json'
            bucket = storage.bucket("project id")
            bucket.blob(path).upload_from_string(edfbyte, content_type='application/octet-stream')
            bucket.blob(path_report).upload_from_string(report_json, content_type='application/json')
            # update session
            s = session.to_dict()
            s[u'macid'] = analysis['header']['macid']
            s[u'quality'] = quality
            s[u'edfPath'] = path
            s[u'reportPath'] = path_report
            s[u'timestamp'] = dateutil.parser.parse(analysis['header']['startdate'])
            self.db.collection(u'ProcessedSessions').document(session.ref.id).set(s)

            try:
                self.db.collection(u'UnprocessedSessions').document(session.ref.id).delete()
                #session.ref.reference.delete()
            except:
                pass
            
            return True, 0
        except Exception as e:
            traceback.print_exc()
            s = session.to_dict()

            if u'attempt' in s:
                attempt = s['attempt']
            else:
                attempt = 0

            self.db.collection(u'UnprocessedSessions').document(session.ref.id).set({u'attempt': attempt + 1}, merge=True)

            return False, attempt + 1

It is a code that I have deployed in the main.py file

ERROR LOGS

TypeError: process_session() missing 1 required positional argument: 'session'

    at call_user_function (/env/local/lib/python3.7/site-packages/google/cloud/functions/worker_v2.py:261)
    at invoke_user_function (/env/local/lib/python3.7/site-packages/google/cloud/functions/worker_v2.py:268)
    at run_http_function (/env/local/lib/python3.7/site-packages/google/cloud/functions/worker_v2.py:402)

来源:https://stackoverflow.com/questions/66085120/how-to-build-google-cloud-serverless-function-for-processing-unprocess-data-from

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!