Bonjour,

j'ai alors voila j'ai un problème avec mon script, ça marche pour quelques produits (2 à 5 disons) et après j'ai une erreur qui est levé

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
headers = {"DOLAPIKEY": config.dolibarr["api_key"]}
 
async def process_product(product)
	params = {
		"sqlfilters": f'''ref="{product['ref']}"'''
	}
 
	async with aiohttp.ClientSession(headers=headers) as ses:
		async with ses.get(f"{config.dolibarr['api_url']}/products", params=params) as r:
			if r.status == 200: # the product already exist, we need a put
				json_response = await r.json()
				product_id = json_response[0]["id"]
				async with ses.put(f"{config.dolibarr['api_url']}/products/{product_id}", json=product) as r2:
					pass
			elif r.status == 404: # the product does not exists
				async with ses.post(f"{config.dolibarr['api_url']}/products", json=product) as r2:
					pass
			else:
				pass
 
 
loop = asyncio.get_event_loop()
pending = [loop.create_task(process_product(p)) for p in products.values()]
loop.run_until_complete(asyncio.gather(*pending))
j'ai remplacé quelques tests et logging par des pass dans le code en haut
products est un dictionnaire issue d'un parsing de plusieurs fichiers XML

voici le traceback
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Traceback (most recent call last):
  File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\site-packages\aiohttp\connector.py", line 936, in _wrap_create_connection
    return await self._loop.create_connection(*args, **kwargs)  # type: ignore  # noqa
  File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\asyncio\base_events.py", line 1042, in create_connection
    transport, protocol = await self._create_connection_transport(
  File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\asyncio\base_events.py", line 1072, in _create_connection_transport
    await waiter
ConnectionResetError
 
The above exception was the direct cause of the following exception:
 
Traceback (most recent call last):
  File "main.py", line 197, in <module>
    loop.run_until_complete(asyncio.gather(*pending))
  File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\asyncio\base_events.py", line 608, in run_until_complete
    return future.result()
  File "main.py", line 48, in process_product
    async with ses.get(f"{config.dolibarr['api_url']}/products", params=params) as r:
  File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\site-packages\aiohttp\client.py", line 1012, in __aenter__
    self._resp = await self._coro
  File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\site-packages\aiohttp\client.py", line 480, in _request
    conn = await self._connector.connect(
  File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\site-packages\aiohttp\connector.py", line 523, in connect
    proto = await self._create_connection(req, traces, timeout)
  File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\site-packages\aiohttp\connector.py", line 858, in _create_connection
    _, proto = await self._create_direct_connection(
  File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\site-packages\aiohttp\connector.py", line 1004, in _create_direct_connection
    raise last_exc
  File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\site-packages\aiohttp\connector.py", line 980, in _create_direct_connection
    transp, proto = await self._wrap_create_connection(
  File "C:\Users\user\AppData\Local\Programs\Python\Python38-32\lib\site-packages\aiohttp\connector.py", line 943, in _wrap_create_connection
    raise client_error(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorError: Cannot connect to host xxxxxxxxxxxxxx:443 ssl:default [None]
, je ne trouve pas grande chose sur les moteurs de recherche si quelqu'un à une idée

par contre avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
for p in products.values():
	loop.run_until_complete(process_product(p))
je ne rencontre pas (encore) le soucis