[Bug] Can't flush stdout at shutdown
@gavin-aguiar y travaille déjà.
Depuis le 2/7/2024.
Évaluation
Cette issue n'a pas encore été évaluée.
Description
Expected Behavior
Hello everyone, I have some azure functions that were working for long time and now they stopped, also locally they work fine, so I tried to investigate for the error, I think the error is due to the fact that I created an AzureLogHandler, that's supposed to log some informations to my Azure Log Analytics and the flush is not well supported. I see that your code is calling sys.stdout.flush() here but I guess that's not the right way, maybe it should be done calling logging.shutdown(), so that it doesn't fail.
Actual Behavior
The Azure function is running fine, but at the end I get this error: Result: Failure Exception: AttributeError: 'PrintLogger' object has no attribute 'flush' Stack: File "/azure-functions-host/workers/python/3.9/LINUX/X64/azure_functions_worker/dispatcher.py", line 643, in _handle__invocation_request sys.stdout.flush()
I'd like it to stop throwing this error.
Steps to Reproduce
No response
Relevant code being tried
from collections import namedtuple
import json
import os
import datetime
from laura.powerbi_pilot import PowerBIPilot
import logging
import azure.functions as func
from opencensus.ext.azure.log_exporter import AzureLogHandler
def get_powerbi_vars(workspace_id):
powerbi_vars = namedtuple("powerbi_vars", [
'appid',
'password',
'tenant_id',
'workspace_id'
])
t = [os.environ['PowerBiSPAppId'],
os.environ['PowerBiSPSecretId'],
os.environ['TenantId'],
workspace_id
]
powerbi_vars = powerbi_vars._make(t)
return powerbi_vars
def main(logdatasetrefreshtimer: func.TimerRequest) -> None:
utc_timestamp = datetime.datetime.utcnow().replace(
tzinfo=datetime.timezone.utc).isoformat()
if logdatasetrefreshtimer.past_due:
logging.info('The timer is past due!')
data_logger = logging.getLogger("data_logging")
data_logger.setLevel(logging.INFO)
logging.info('Fetching APPINSIGHTS key')
app_insights_instr_key = os.environ["APPINSIGHTS_INSTRUMENTATIONKEY"]
logging.info('Adding key to handler')
data_logger.addHandler(AzureLogHandler(
connection_string=f"InstrumentationKey={app_insights_instr_key}")
)
workspaces = list(os.environ["PowerBiWorkspaces"].split(","))
for workspace in workspaces:
logging.info(f"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Workspace: {workspace}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
powerbi_pilot = PowerBIPilot(
powerbi_vars=get_powerbi_vars(workspace_id=workspace))
try:
powerbi_pilot.get_token()
datasets = (json.loads(powerbi_pilot.list_datasets_from_group(powerbi_pilot.workspace_id).content)['value'])
#logging.info(datasets)
for dataset in datasets:
if dataset['name'] not in ["Report Usage Metrics Model","Usage Metrics Report"]:
logging.info(
f"~~~~~~~~~~~~~~ Refresh history dataset: {dataset['id']}: {dataset['name']} ~~~~~~~~~~~~~~")
for refresh in (json.loads(powerbi_pilot.get_refresh_history(dataset['id']).content)['value']):
refresh['dataset'] = dataset['id']
refresh['workspace'] = workspace
data_logger.info(json.dumps(refresh))
except Exception as e:
logging.info(e)
Relevant log output
06/07/2024, 06:00:09.452
Error
Result: Failure Exception: AttributeError: 'PrintLogger' object has no attribute 'flush' Stack: File "/azure-functions-host/workers/python/3.9/LINUX/X64/azure_functions_worker/dispatcher.py", line 643, in _handle__invocation_request sys.stdout.flush()
06/07/2024, 06:00:09.452
Error
Executed 'Functions.PowerBiLogger' (Failed, Id=6799712d-8639-48e6-85c4-5a506d2a99ab, Duration=9449ms)
06/07/2024, 06:00:09.460
Error
Result: Failure Exception: AttributeError: 'PrintLogger' object has no attribute 'flush' Stack: File "/azure-functions-host/workers/python/3.9/LINUX/X64/azure_functions_worker/dispatcher.py", line 643, in _handle__invocation_request sys.stdout.flush()
requirements.txt file
azure-functions
requests
databricks-cli
opencensus-ext-azure
pandas
./domains/data_tamers/functions/shared/wheels/laura-0.22.0-py3-none-any.whl
Where are you facing this problem?
Production Environment (explain below)
Function app name
No response
Additional Information
No response
- Langage dominant
- Python
- Étoiles
- 357
- Forks
- 117
- Merge moyen
- 13 j 12 h
- PR mergées (30 j)
- 2
Préparer son environnement
Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de Azure/azure-functions-python-worker
-
[Bug] ASGI cookie conversion serializes an absent Domain attribute and breaks __Host- cookiesPeut-être pris @tharun06 l’a pris il y a 24 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 28/100
Azure/azure-functions-python-worker#1908 · 2 commentaires ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 55/100
Azure/azure-functions-python-worker#1906 · 1 commentaire ·
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
-
[Python 3.14 proxy worker] Missing sys.modules["__main__"] breaks multiprocessing spawnPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 55/100
Toutes les issues de Azure/azure-functions-python-worker
Issues similaires
-
documentation good first issue
Difficulté 2/5 Une demi-journée Accessibilité débutants 72/100
sujithputta02/Esapay#13 ·
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
Les mainteneurs répondent en général sous 1 jour
-
Flaky: credential-proxy admission metric test asserts a wall-clock bound it does not establishOuverteneeds-triage
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
gke-labs/kube-agents#3277 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
jbacalso24/mimry#291 ·
Les mainteneurs répondent en général sous 1 jour
-
good first issue
Difficulté 2/5 Moins d'une heure Accessibilité débutants 82/100
eli-alvarado/us-watchlist-alerts#14 ·
Les mainteneurs répondent en général sous 1 jour