Python asyncio aiopg исключение для правильной комбинации хоста и базы данныхPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Python asyncio aiopg исключение для правильной комбинации хоста и базы данных

Сообщение Anonymous »

У меня есть список из 155 баз данных Host +, и я хочу создать простое приложение в записной книжке Jupyter, которое запускает некоторый запрос на них. Пример выглядит следующим образом: < /p>
SQL = """
SELECT 1
"""

import asyncio
import aiopg
import nest_asyncio
nest_asyncio.apply()
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)

async def runQuery(host, db, sql):
print(str(host), str(db))
if str(host) == 'nan':
return 'No host'
try:
conn = await aiopg.connect(database=str(db),
user='some_user',
password='some_password',
host=str(host), timeout = 2)
print('xxxx')
except (psycopg2.Error, asyncio.TimeoutError, psycopg2.OperationalError) as e:
return 'Error creating connection exception'
if not conn or conn.closed == 1:
return 'Error creating connection'
try:
cur = await conn.cursor()
if not cur:
return 'No cursor'
await cur.execute(sql)
result = await cur.fetchall()
await conn.close()
return result
except psycopg2.Error as e:
await conn.close()
return 'Error fetching'

async def main():
tasks = []
for item in csvFile:
tasks.extend([runQuery(item['host'], it, SQL) for it in item['dbs'])
results = []
i = 90 # to start with host+db number 90
d = 1 # how many to run at once
while i
У меня очень странная проблема, где все работает нормально, но не с несколькими комбинациями базы данных Host+. У меня есть в списке 155 комбинаций, и он не работает на номере 90, а затем 120, который выглядит совершенно правильно. Проблема в том, что я не могу поймать эту ошибку, так как она не бросает никаких исключений в функцию Runquery , Line conn = await aiopg.connect ... (и я не хочу прервать весь процесс, только это соединение), даже если я знаю, что это происходит во время этого вызова. Любая идея, что я могу сделать, чтобы поймать исключение, и игнорировать его только для этих единственных комбинаций хоста и базы данных? Или иметь дело с этим другим способом? < /P>
Я получаю ошибку: < /p>
OSError: [WinError 10038] An operation was attempted on something that is not a socket
< /code>
Full Traceback: < /p>
---------------------------------------------------------------------------
OSError Traceback (most recent call last)
Cell In[9], line 70
68 #results = await asyncio.gather(*tasks)
69 return results
---> 70 results = loop.run_until_complete(main())
71 print(results)
73 loop.close()

File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\nest_asyncio.py:92, in _patch_loop..run_until_complete(self, future)
90 f._log_destroy_pending = False
91 while not f.done():
---> 92 self._run_once()
93 if self._stopping:
94 break

File ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\nest_asyncio.py:115, in _patch_loop.._run_once(self)
108 heappop(scheduled)
110 timeout = (
111 0 if ready or self._stopping
112 else min(max(
113 scheduled[0]._when - self.time(), 0), 86400) if scheduled
114 else None)
--> 115 event_list = self._selector.select(timeout)
116 self._process_events(event_list)
118 end_time = self.time() + self._clock_resolution

File ~\AppData\Local\Programs\Python\Python312\Lib\selectors.py:323, in SelectSelector.select(self, timeout)
321 ready = []
322 try:
--> 323 r, w, _ = self._select(self._readers, self._writers, [], timeout)
324 except InterruptedError:
325 return ready

File ~\AppData\Local\Programs\Python\Python312\Lib\selectors.py:314, in SelectSelector._select(self, r, w, _, timeout)
313 def _select(self, r, w, _, timeout=None):
--> 314 r, w, x = select.select(r, w, w, timeout)
315 return r, w + x, []

OSError: [WinError 10038] An operation was attempted on something that is not a socket


Подробнее здесь: https://stackoverflow.com/questions/795 ... d-database
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»