by Guest » 23 Feb 2025, 08:09
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
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:
[b] file1.py[/b]
[code]noticlient = NotificationClient()
@app.post("/{data}")
def send_msg(somemsg: str, background_tasks: BackgroundTasks):
result = add_some_tasks(data, background_tasks, noticlient)
return result
[/code]
[b]File2.py[/b]
[code]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 [/code] 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:
[b] file1.py[/b]
[code]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
[/code]