Seite 1 von 1
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
Verfasst: Sonntag 26. Juli 2020, 17:38
von Phobit
Hallo,
Immer wenn ich folgenden Block ausführe
Erhalte ich foglende Warnung:
Code: Alles auswählen
/home/phobit/PycharmProjects/DiscordSippenBot/Main.py:160: RuntimeWarning: coroutine 'Messageable.fetch_message' was never awaited
msg_id = await self.channel.fetch_message(MESSAGEID)
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
Die Funktion ist mit async geschrieben, und das await hab ich ja auch verwendet, woher kommt nun die Runtime Warning? (und, nebenbei, gibt es eine Möglichkeit diese Runtime Warnings zu unterdrücken? mit try/except scheint es ned zu klappen)
Re: RuntimeWarning: Enable tracemalloc to get the object allocation traceback
Verfasst: Sonntag 26. Juli 2020, 19:21
von Sirius3
Wie sieht denn der gesamte Code aus?
Re: RuntimeWarning: Enable tracemalloc to get the object allocation traceback
Verfasst: Montag 27. Juli 2020, 16:57
von Phobit
Der ganze Code ist gute 1.000 Zeilen lang. Reicht dir vllt ein bestimmter ausschnitt? Will ungern alles posten...
Das wäre mal die gesamte Funktion mit der Codezeile:
Code: Alles auswählen
async def on_ready(self):
if self.ready is False:
try:
self.logging("sys", "syslog.txt", "Starting...")
id_init = self.init_ids()
if id_init is True:
self.stat_embed_id = await self.server_statistiken.fetch_message(736979692913164289)
self.logging("sys", "syslog.txt", "Initializing IDs.....Done")
await self.server_logging("sys", "Initializing IDs......Done")
else:
self.logging("sys", "syslog.txt", "Initializing IDs....Error")
task_init = self.task_handler()
if task_init is True:
self.logging("sys", "syslog.txt", "Initializing tasks...Done")
await self.server_logging("sys", "Initializing tasks...Done")
else:
self.logging("sys", "syslog.txt", "Initializing tasks..Error")
await self.server_logging("sys", "Initializing tasks..Error")
print("Bot ready")
self.logging("sys", "syslog.txt", "Bot started succesfully!\n")
await self.server_logging("sys", "Bot started succesfully!")
except Exception as e:
self.logging("sys", "errorlog.txt", "Bot could not be started!")
self.logging("sys", "errorlog.txt", "Error:%s\n" % e)
await self.server_logging("sys", "Startup failed.")
await self.server_logging("error", "Bot failed, Error:%s" % e)
self.ready = True
else:
self.logging("sys", "syslog.txt", "on_ready was called!\n")
self.ready = True
Re: RuntimeWarning: Enable tracemalloc to get the object allocation traceback
Verfasst: Montag 27. Juli 2020, 20:22
von sparrow
@Phobit: Ich weiß ja nicht, wo du da die Codezeile aus dem ersten Post bzw. aus der Fehlermeldung da siehst - ich sehe sie nicht....
Reduzier das Programm so weit, dass der Fehler repruduzierbar ist und poste dann das Beispielprogramm.
Re: RuntimeWarning: Enable tracemalloc to get the object allocation traceback
Verfasst: Donnerstag 30. Juli 2020, 17:11
von Phobit
Ok, here it comes:
Code: Alles auswählen
async def on_ready(self):
"""Called when the client is done preparing the data received from Discord. Initiates IDs and Tasks."""
id_init = self.init_ids()
if id_init is True:
self.stat_embed_id = await self.server_statistiken.fetch_message(736979692913199999)
Der erwähnte init_ids:
Code: Alles auswählen
def init_ids(self):
"""Initiates IDs that have to be fetched after the bot has started."""
try:
self.server_statistiken = self.get_channel(736978976643219999)
except Exception:
return False
else:
return True
Müsste alles sein. Die IDs/ints sind IDs der verschiedenen DiscordChannels. Den init_ids brauche ich um mehrere/alle Channels zu "getten", der im on_ready erwähnte Problemmacher self.stat_embed_id ist eine Ausnahme, weil der in einer async-Funktion stehen muss wegen dem await.