Wie initialisieren Sie ein globales Objekt oder eine Variable und verwenden Sie es in jedem Fastapi -Endpunkt wiederher?Python

Python-Programme
Guest
 Wie initialisieren Sie ein globales Objekt oder eine Variable und verwenden Sie es in jedem Fastapi -Endpunkt wiederher?

Post by Guest »

Ich habe eine Klasse, um Benachrichtigungen zu senden. Bei der Initialisierung beinhaltet dies eine Verbindung zu einem Benachrichtigungsserver, der zeitaufwändig ist. Ich verwende eine Hintergrundaufgabe in Fastapi, um Benachrichtigungen zu senden, da ich die Antwort aufgrund der Benachrichtigung nicht verzögern möchte. Unten finden Sie den Beispielcode:
file1.py

Code: Select all

noticlient = NotificationClient()

@app.post("/{data}")
def send_msg(somemsg: str, background_tasks: BackgroundTasks):
result = add_some_tasks(data, background_tasks, noticlient)
return result
File2.py

Code: Select all

def add_some_tasks(data, background_tasks: BackgroundTasks, noticlient):
background_tasks.add_task(noticlient.send, param1, param2)
result = some_operation
return result
< /code>
Hier wird der Benachrichtigungs -Client global deklariert. Ich hätte es in [b] file2.py [/b] unter add_some_tasks 
initialisiert haben, aber es wird jedes Mal initialisiert, wenn eine Anfrage eintrifft, und das würde einige Zeit erfordern. Gibt es eine Möglichkeit, eine Middleware zu verwenden, um sie jedes Mal wiederzuverwenden, wenn eine Anfrage eintrifft, damit sie nicht jedes Mal initialisiert werden muss. Initialisieren Sie die Benachrichtigung in der Klassendefinition:
file1.py

Code: Select all

class childFastApi(FastAPI):
noticlient = NotificationClient()

app = childFastApi()

@app.post("/{data}")
def send_msg(somemsg: str, background_tasks: BackgroundTasks):
result = add_some_tasks(data, background_tasks, app.noticlient)
return result

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post