Skip to content
This repository was archived by the owner on Mar 10, 2025. It is now read-only.

AsyncPoeApi TypeError: object dict can't be used in 'await' expression" #216

Open
cherishleon opened this issue Feb 7, 2025 · 0 comments

Comments

@cherishleon
Copy link

I have a problem when I try to use asynchronous calls to the api.

import asyncio
from poe_api_wrapper import AsyncPoeApi
async def xx(client, row):
    answer = 
    async for chunk in client.send_message("", message, chatId=):

    return answer 

async def process_batch(client, rows, batch_size=5):
    tasks = []
    for row in rows:
        task = asyncio.create_task(xx(client, row))
        tasks.append(task)
    results = await asyncio.gather(*tasks)
    return results

async def process_dataframe(df, batch_size=5):
    client = await AsyncPoeApi(tokens=tokens).create()

     results = await process_batch(client, batch_rows, batch_size)
async def main1():
    batch_size = 1
    await process_dataframe(df, batch_size)

asyncio.run(main1())

TypeError Traceback (most recent call last)
Cell In[26], line 5
2 batch_size = 1
3 await process_dataframe(df, batch_size)
----> 5 asyncio.run(main1())

File d:\conda\lib\site-packages
est_asyncio.py:35, in _patch_asyncio..run(main, debug)
33 task = asyncio.ensure_future(main)
34 try:
---> 35 return loop.run_until_complete(task)
36 finally:
37 if not task.done():

File d:\conda\lib\site-packages
est_asyncio.py:90, in _patch_loop..run_until_complete(self, future)
87 if not f.done():
88 raise RuntimeError(
89 'Event loop stopped before Future completed.')
---> 90 return f.result()

File d:\conda\lib\asyncio\futures.py:201, in Future.result(self)
199 self.__log_traceback = False
200 if self._exception is not None:
--> 201 raise self._exception.with_traceback(self._exception_tb)
202 return self._result

File d:\conda\lib\asyncio\tasks.py:234, in Task.__step(failed resolving arguments)
232 result = coro.send(None)
233 else:
--> 234 result = coro.throw(exc)
235 except StopIteration as exc:
236 if self._must_cancel:
237 # Task is cancelled right before coro stops.

Cell In[26], line 3, in main1()
1 async def main1():
2 batch_size = 1
----> 3 await process_dataframe(df, batch_size)

Cell In[17], line 41, in process_dataframe(df, batch_size)
38 batch_rows = df.iloc[batch_start:batch_end].to_dict('records')
40 # try:
---> 41 results = await process_batch(client, batch_rows, batch_size)
43 for idx, result in enumerate(results):
44 df_idx = batch_start + idx

Cell In[17], line 20, in process_batch(client, rows, batch_size)
18 task = asyncio.create_task(translate(client, row))
19 tasks.append(task)
---> 20 results = await asyncio.gather(*tasks)
21 return results

File d:\conda\lib\asyncio\tasks.py:304, in Task.__wakeup(self, future)
302 def __wakeup(self, future):
303 try:
--> 304 future.result()
305 except BaseException as exc:
306 # This may also be a cancellation.
307 self.__step(exc)

File d:\conda\lib\asyncio\tasks.py:232, in Task.__step(failed resolving arguments)
228 try:
229 if exc is None:
230 # We use the send method directly, because coroutines
231 # don't have __iter__ and __next__ methods.
--> 232 result = coro.send(None)
233 else:
234 result = coro.throw(exc)

Cell In[17], line 9, in translate(client, row)
8 answer = ''
----> 9 async for chunk in client.send_message("", message, chatId=):

File d:\conda\lib\site-packages\poe_api_wrapper\async_api.py:930, in AsyncPoeApi.send_message(self, bot, message, chatId, chatCode, msgPrice, file_path, suggest_replies, timeout)
926 yield response
928 last_text = response["text"]
--> 930 await self.delete_queues(chatId)
931 self.retry_attempts = 3

File d:\conda\lib\site-packages\poe_api_wrapper\async_api.py:384, in AsyncPoeApi.delete_queues(self, chatId)
382 while not self.message_queues[chatId].empty():
383 try:
--> 384 await self.message_queues[chatId].get_nowait()
385 except asyncio.QueueEmpty:
386 pass

TypeError: object dict can't be used in 'await' expression"

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant