long2ice / meilisync

Realtime sync data from MySQL/PostgreSQL/MongoDB to Meilisearch
https://github.com/long2ice/meilisync
Apache License 2.0
247 stars 37 forks source link

TypeError: 'async for' requires an object with __aiter__ method, got list #53

Closed ownedge13 closed 7 months ago

ownedge13 commented 8 months ago

here my docker-compose

meilisearch: api_url: http://MY_IP:7700/ api_key: MY_API_KEY insert_size: 1000 insert_interval: 10

source: type: mysql host: MY_IP port: 3307 database: MY_DB user: LOGIN password: PASSWORD

sync:

progress: type: file

sanders41 commented 8 months ago

Try adding a path to your progress https://github.com/long2ice/meilisync?tab=readme-ov-file#progress.

If that doesn't work please provide the full stack trace.

ownedge13 commented 8 months ago

i don't know how to provide you a full stack trace of meilisync, here is the docker log on a test base, i have also test on the sakila free database and it end up with the exact same error.

2023-12-20 09:09:56 ╭───────────────────── Traceback (most recent call last) ──────────────────────╮
2023-12-20 09:09:56 │ /meilisync/meilisync/main.py:140 in start                                    │
2023-12-20 09:09:56 │                                                                              │
2023-12-20 09:09:56 │   137 │   │   lock = asyncio.Lock()                                          │
2023-12-20 09:09:56 │   138 │   │   await asyncio.gather(_(), interval())                          │
2023-12-20 09:09:56 │   139 │                                                                      │
2023-12-20 09:09:56 │ ❱ 140 │   asyncio.run(run())                                                 │
2023-12-20 09:09:56 │   141                                                                        │
2023-12-20 09:09:56 │   142                                                                        │
2023-12-20 09:09:56 │   143 @app.command(help="Refresh all data by swap index")                    │
2023-12-20 09:09:56 │                                                                              │
2023-12-20 09:09:56 │ ╭───────────────────────────────── locals ─────────────────────────────────╮ │
2023-12-20 09:09:56 │ │                _ = <function start.<locals>._ at 0x7f2d78bfede0>         │ │
2023-12-20 09:09:56 │ │       collection = <meilisync.event.EventCollection object at            │ │
2023-12-20 09:09:56 │ │                    0x7f2d78b6e8d0>                                       │ │
2023-12-20 09:09:56 │ │          context = <click.core.Context object at 0x7f2d797a4bc0>         │ │
2023-12-20 09:09:56 │ │ current_progress = None                                                  │ │
2023-12-20 09:09:56 │ │         interval = <function start.<locals>.interval at 0x7f2d78bfeac0>  │ │
2023-12-20 09:09:56 │ │             lock = <asyncio.locks.Lock object at 0x7f2d78fd0950          │ │
2023-12-20 09:09:56 │ │                    [unlocked]>                                           │ │
2023-12-20 09:09:56 │ │            meili = <meilisync.meili.Meili object at 0x7f2d78b6fe60>      │ │
2023-12-20 09:09:56 │ │   meili_settings = MeiliSearch(                                          │ │
2023-12-20 09:09:56 │ │                    │   api_url='http://192.168.1.12:7700',               │ │
2023-12-20 09:09:56 │ │                    │                                                     │ │
2023-12-20 09:09:56 │ │                    api_key='5301917b2d43ecc145ac18a3151361a58d192f5d8b9… │ │
2023-12-20 09:09:56 │ │                    │   insert_size=1000,                                 │ │
2023-12-20 09:09:56 │ │                    │   insert_interval=10                                │ │
2023-12-20 09:09:56 │ │                    )                                                     │ │
2023-12-20 09:09:56 │ │         progress = <meilisync.progress.file.File object at               │ │
2023-12-20 09:09:56 │ │                    0x7f2d78b6e5a0>                                       │ │
2023-12-20 09:09:56 │ │              run = <function start.<locals>.run at 0x7f2d78bfed40>       │ │
2023-12-20 09:09:56 │ │         settings = Settings(                                             │ │
2023-12-20 09:09:56 │ │                    │   plugins=['meilisync.plugin.Plugin'],              │ │
2023-12-20 09:09:56 │ │                    │   progress=Progress(                                │ │
2023-12-20 09:09:56 │ │                    │   │   type=<ProgressType.file: 'file'>,             │ │
2023-12-20 09:09:56 │ │                    │   │   path='progress.json'                          │ │
2023-12-20 09:09:56 │ │                    │   ),                                                │ │
2023-12-20 09:09:56 │ │                    │   debug=True,                                       │ │
2023-12-20 09:09:56 │ │                    │   source=Source(                                    │ │
2023-12-20 09:09:56 │ │                    │   │   type=<SourceType.mysql: 'mysql'>,             │ │
2023-12-20 09:09:56 │ │                    │   │   database='9mois',                             │ │
2023-12-20 09:09:56 │ │                    │   │   host='192.168.1.12',                          │ │
2023-12-20 09:09:56 │ │                    │   │   port=3307,                                    │ │
2023-12-20 09:09:56 │ │                    │   │   user='root',                                  │ │
2023-12-20 09:09:56 │ │                    │   │   password='root'                               │ │
2023-12-20 09:09:56 │ │                    │   ),                                                │ │
2023-12-20 09:09:56 │ │                    │   meilisearch=MeiliSearch(                          │ │
2023-12-20 09:09:56 │ │                    │   │   api_url='http://192.168.1.12:7700',           │ │
2023-12-20 09:09:56 │ │                    │   │                                                 │ │
2023-12-20 09:09:56 │ │                    api_key='5301917b2d43ecc145ac18a3151361a58d192f5d8b9… │ │
2023-12-20 09:09:56 │ │                    │   │   insert_size=1000,                             │ │
2023-12-20 09:09:56 │ │                    │   │   insert_interval=10                            │ │
2023-12-20 09:09:56 │ │                    │   ),                                                │ │
2023-12-20 09:09:56 │ │                    │   sync=[                                            │ │
2023-12-20 09:09:56 │ │                    │   │   Sync(                                         │ │
2023-12-20 09:09:56 │ │                    │   │   │   plugins=['meilisync.plugin.Plugin'],      │ │
2023-12-20 09:09:56 │ │                    │   │   │   table='recipes',                          │ │
2023-12-20 09:09:56 │ │                    │   │   │   pk='id',                                  │ │
2023-12-20 09:09:56 │ │                    │   │   │   full=True,                                │ │
2023-12-20 09:09:56 │ │                    │   │   │   index='recipes-collections',              │ │
2023-12-20 09:09:56 │ │                    │   │   │   fields=None                               │ │
2023-12-20 09:09:56 │ │                    │   │   )                                             │ │
2023-12-20 09:09:56 │ │                    │   ],                                                │ │
2023-12-20 09:09:56 │ │                    │   sentry=Sentry(                                    │ │
2023-12-20 09:09:56 │ │                    │   │   dsn='',                                       │ │
2023-12-20 09:09:56 │ │                    │   │   environment='developement'                    │ │
2023-12-20 09:09:56 │ │                    │   )                                                 │ │
2023-12-20 09:09:56 │ │                    )                                                     │ │
2023-12-20 09:09:56 │ │           source = <meilisync.source.mysql.MySQL object at               │ │
2023-12-20 09:09:56 │ │                    0x7f2d78fd28a0>                                       │ │
2023-12-20 09:09:56 │ ╰──────────────────────────────────────────────────────────────────────────╯ │
2023-12-20 09:09:56 │                                                                              │
2023-12-20 09:09:56 │ /usr/local/lib/python3.12/asyncio/runners.py:194 in run                      │
2023-12-20 09:09:56 │                                                                              │
2023-12-20 09:09:56 │   191 │   │   │   "asyncio.run() cannot be called from a running event loop" │
2023-12-20 09:09:56 │   192 │                                                                      │
2023-12-20 09:09:56 │   193 │   with Runner(debug=debug, loop_factory=loop_factory) as runner:     │
2023-12-20 09:09:56 │ ❱ 194 │   │   return runner.run(main)                                        │
2023-12-20 09:09:56 │   195                                                                        │
2023-12-20 09:09:56 │   196                                                                        │
2023-12-20 09:09:56 │   197 def _cancel_all_tasks(loop):                                           │
2023-12-20 09:09:56 │                                                                              │
2023-12-20 09:09:56 │ ╭──────────────────────────────── locals ────────────────────────────────╮   │
2023-12-20 09:09:56 │ │        debug = None                                                    │   │
2023-12-20 09:09:56 │ │ loop_factory = None                                                    │   │
2023-12-20 09:09:56 │ │         main = <coroutine object start.<locals>.run at 0x7f2d78b8d1c0> │   │
2023-12-20 09:09:56 │ │       runner = <asyncio.runners.Runner object at 0x7f2d78b6f950>       │   │
2023-12-20 09:09:56 │ ╰────────────────────────────────────────────────────────────────────────╯   │
2023-12-20 09:09:56 │                                                                              │
2023-12-20 09:09:56 │ /usr/local/lib/python3.12/asyncio/runners.py:118 in run                      │
2023-12-20 09:09:56 │                                                                              │
2023-12-20 09:09:56 │   115 │   │                                                                  │
2023-12-20 09:09:56 │   116 │   │   self._interrupt_count = 0                                      │
2023-12-20 09:09:56 │   117 │   │   try:                                                           │
2023-12-20 09:09:56 │ ❱ 118 │   │   │   return self._loop.run_until_complete(task)                 │
2023-12-20 09:09:56 │   119 │   │   except exceptions.CancelledError:                              │
2023-12-20 09:09:56 │   120 │   │   │   if self._interrupt_count > 0:                              │
2023-12-20 09:09:56 │   121 │   │   │   │   uncancel = getattr(task, "uncancel", None)             │
2023-12-20 09:09:56 │                                                                              │
2023-12-20 09:09:56 │ ╭───────────────────────────────── locals ─────────────────────────────────╮ │
2023-12-20 09:09:56 │ │        context = <_contextvars.Context object at 0x7f2d78bd5440>         │ │
2023-12-20 09:09:56 │ │           coro = <coroutine object start.<locals>.run at 0x7f2d78b8d1c0> │ │
2023-12-20 09:09:56 │ │           self = <asyncio.runners.Runner object at 0x7f2d78b6f950>       │ │
2023-12-20 09:09:56 │ │ sigint_handler = functools.partial(<bound method Runner._on_sigint of    │ │
2023-12-20 09:09:56 │ │                  <asyncio.runners.Runner object at 0x7f2d78b6f950>>,     │ │
2023-12-20 09:09:56 │ │                  main_task=<Task finished name='Task-4'                  │ │
2023-12-20 09:09:56 │ │                  coro=<start.<locals>.run() done, defined at             │ │
2023-12-20 09:09:56 │ │                  /meilisync/meilisync/main.py:135>                       │ │
2023-12-20 09:09:56 │ │                  exception=TypeError("'async for' requires an object     │ │
2023-12-20 09:09:56 │ │                  with __aiter__ method, got list")>)                     │ │
2023-12-20 09:09:56 │ │           task = <Task finished name='Task-4' coro=<start.<locals>.run() │ │
2023-12-20 09:09:56 │ │                  done, defined at /meilisync/meilisync/main.py:135>      │ │
2023-12-20 09:09:56 │ │                  exception=TypeError("'async for' requires an object     │ │
2023-12-20 09:09:56 │ │                  with __aiter__ method, got list")>                      │ │
2023-12-20 09:09:56 │ ╰──────────────────────────────────────────────────────────────────────────╯ │
2023-12-20 09:09:56 │                                                                              │
2023-12-20 09:09:56 │ /usr/local/lib/python3.12/asyncio/base_events.py:684 in run_until_complete   │
2023-12-20 09:09:56 │                                                                              │
2023-12-20 09:09:56 │    681 │   │   if not future.done():                                         │
2023-12-20 09:09:56 │    682 │   │   │   raise RuntimeError('Event loop stopped before Future comp │
2023-12-20 09:09:56 │    683 │   │                                                                 │
2023-12-20 09:09:56 │ ❱  684 │   │   return future.result()                                        │
2023-12-20 09:09:56 │    685 │                                                                     │
2023-12-20 09:09:56 │    686 │   def stop(self):                                                   │
2023-12-20 09:09:56 │    687 │   │   """Stop running the event loop.                               │
2023-12-20 09:09:56 │                                                                              │
2023-12-20 09:09:56 │ ╭───────────────────────────────── locals ─────────────────────────────────╮ │
2023-12-20 09:09:56 │ │   future = <Task finished name='Task-4' coro=<start.<locals>.run() done, │ │
2023-12-20 09:09:56 │ │            defined at /meilisync/meilisync/main.py:135>                  │ │
2023-12-20 09:09:56 │ │            exception=TypeError("'async for' requires an object with      │ │
2023-12-20 09:09:56 │ │            __aiter__ method, got list")>                                 │ │
2023-12-20 09:09:56 │ │ new_task = False                                                         │ │
2023-12-20 09:09:56 │ │     self = <_UnixSelectorEventLoop running=False closed=True             │ │
2023-12-20 09:09:56 │ │            debug=False>                                                  │ │
2023-12-20 09:09:56 │ ╰──────────────────────────────────────────────────────────────────────────╯ │
2023-12-20 09:09:56 │                                                                              │
2023-12-20 09:09:56 │ /meilisync/meilisync/main.py:138 in run                                      │
2023-12-20 09:09:56 │                                                                              │
2023-12-20 09:09:56 │   135 │   async def run():                                                   │
2023-12-20 09:09:56 │   136 │   │   nonlocal lock                                                  │
2023-12-20 09:09:56 │   137 │   │   lock = asyncio.Lock()                                          │
2023-12-20 09:09:56 │ ❱ 138 │   │   await asyncio.gather(_(), interval())                          │
2023-12-20 09:09:56 │   139 │                                                                      │
2023-12-20 09:09:56 │   140 │   asyncio.run(run())                                                 │
2023-12-20 09:09:56 │   141                                                                        │
2023-12-20 09:09:56 │                                                                              │
2023-12-20 09:09:56 │ ╭────────────────────────────── locals ───────────────────────────────╮      │
2023-12-20 09:09:56 │ │        _ = <function start.<locals>._ at 0x7f2d78bfede0>            │      │
2023-12-20 09:09:56 │ │ interval = <function start.<locals>.interval at 0x7f2d78bfeac0>     │      │
2023-12-20 09:09:56 │ │     lock = <asyncio.locks.Lock object at 0x7f2d78fd0950 [unlocked]> │      │
2023-12-20 09:09:56 │ ╰─────────────────────────────────────────────────────────────────────╯      │
2023-12-20 09:09:56 │                                                                              │
2023-12-20 09:09:56 │ /meilisync/meilisync/main.py:91 in _                                         │
2023-12-20 09:09:56 │                                                                              │
2023-12-20 09:09:56 │    88 │   │   │   │   count = 0                                              │
2023-12-20 09:09:56 │    89 │   │   │   │   async for items in source.get_full_data(sync, meili_se │
2023-12-20 09:09:56 │    90 │   │   │   │   │   count += len(items)                                │
2023-12-20 09:09:56 │ ❱  91 │   │   │   │   │   await meili.add_full_data(sync, items)             │
2023-12-20 09:09:56 │    92 │   │   │   │   if count:                                              │
2023-12-20 09:09:56 │    93 │   │   │   │   │   logger.info(                                       │
2023-12-20 09:09:56 │    94 │   │   │   │   │   │   f'Full data sync for table "{settings.source.d │
2023-12-20 09:09:56 │                                                                              │
2023-12-20 09:09:56 │ ╭───────────────────────────────── locals ─────────────────────────────────╮ │
2023-12-20 09:09:56 │ │       collection = <meilisync.event.EventCollection object at            │ │
2023-12-20 09:09:56 │ │                    0x7f2d78b6e8d0>                                       │ │
2023-12-20 09:09:56 │ │            count = 51                                                    │ │
2023-12-20 09:09:56 │ │ current_progress = None                                                  │ │
2023-12-20 09:09:56 │ │            items = [                                                     │ │
2023-12-20 09:09:56 │ │                    │   {                                                 │ │
2023-12-20 09:09:56 │ │                    │   │   'id': 1,                                      │ │
2023-12-20 09:09:56 │ │                    │   │   'name': 'Courge rôtie',                       │ │
2023-12-20 09:09:56 │ │                    │   │   'time': 55,                                   │ │
2023-12-20 09:09:56 │ │                    │   │   'difficulty': 'Facile',                       │ │
2023-12-20 09:09:56 │ │                    │   │   'budget': 'Bon Marché',                       │ │
2023-12-20 09:09:56 │ │                    │   │   'img': '/images/recipes/courge_rotie.jpg',    │ │
2023-12-20 09:09:56 │ │                    │   │   'review': '> ***L’avis 9 mois à croquer       │ │
2023-12-20 09:09:56 │ │                    :***\n> \n> - Une recette qui contribue aux           │ │
2023-12-20 09:09:56 │ │                    **apports'+463,                                       │ │
2023-12-20 09:09:56 │ │                    │   │   'nb_portions': 4,                             │ │
2023-12-20 09:09:56 │ │                    │   │   'side_food': '*Liste non-exhaustive (de       │ │
2023-12-20 09:09:56 │ │                    nouvelles idées viendront s’ajouter avec le           │ │
2023-12-20 09:09:56 │ │                    temps)*\n\n-'+351,                                    │ │
2023-12-20 09:09:56 │ │                    │   │   'steps': '1. Préchauffer le four à 190°C\n2.  │ │
2023-12-20 09:09:56 │ │                    Couper la courge en 2 et retirer les pépins\n3.'+427, │ │
2023-12-20 09:09:56 │ │                    │   │   ... +5                                        │ │
2023-12-20 09:09:56 │ │                    │   },                                                │ │
2023-12-20 09:09:56 │ │                    │   {                                                 │ │
2023-12-20 09:09:56 │ │                    │   │   'id': 2,                                      │ │
2023-12-20 09:09:56 │ │                    │   │   'name': 'Muffin à la carotte et aux noix',    │ │
2023-12-20 09:09:56 │ │                    │   │   'time': 10,                                   │ │
2023-12-20 09:09:56 │ │                    │   │   'difficulty': 'Facile',                       │ │
2023-12-20 09:09:56 │ │                    │   │   'budget': 'Bon Marché',                       │ │
2023-12-20 09:09:56 │ │                    │   │   'img':                                        │ │
2023-12-20 09:09:56 │ │                    '/images/recipes/Muffins_carottes_noix.png',          │ │
2023-12-20 09:09:56 │ │                    │   │   'review': '> ***L’avis 9 mois à croquer       │ │
2023-12-20 09:09:56 │ │                    :***\n> \n> - Un petit plaisir à base de              │ │
2023-12-20 09:09:56 │ │                    **carottes**'+364,                                    │ │
2023-12-20 09:09:56 │ │                    │   │   'nb_portions': 10,                            │ │
2023-12-20 09:09:56 │ │                    │   │   'side_food': '',                              │ │
2023-12-20 09:09:56 │ │                    │   │   'steps': '1. Préchauffer le four à 180°C      │ │
2023-12-20 09:09:56 │ │                    (th.6)\n2. Eplucher les carottes, les laver puis      │ │
2023-12-20 09:09:56 │ │                    l'+520,                                               │ │
2023-12-20 09:09:56 │ │                    │   │   ... +5                                        │ │
2023-12-20 09:09:56 │ │                    │   },                                                │ │
2023-12-20 09:09:56 │ │                    │   {                                                 │ │
2023-12-20 09:09:56 │ │                    │   │   'id': 3,                                      │ │
2023-12-20 09:09:56 │ │                    │   │   'name': 'Boulghour à la tomate et aux pois    │ │
2023-12-20 09:09:56 │ │                    chiches',                                             │ │
2023-12-20 09:09:56 │ │                    │   │   'time': 35,                                   │ │
2023-12-20 09:09:56 │ │                    │   │   'difficulty': 'Facile',                       │ │
2023-12-20 09:09:56 │ │                    │   │   'budget': 'Bon Marché',                       │ │
2023-12-20 09:09:56 │ │                    │   │   'img':                                        │ │
2023-12-20 09:09:56 │ │                    '/images/recipes/Boulghour_tomates_poischiches.png',  │ │
2023-12-20 09:09:56 │ │                    │   │   'review': '> ***L’avis 9 mois à croquer       │ │
2023-12-20 09:09:56 │ │                    :***\n> \n> - Une recette de **plat complet** avec    │ │
2023-12-20 09:09:56 │ │                    de'+421,                                              │ │
2023-12-20 09:09:56 │ │                    │   │   'nb_portions': 4,                             │ │
2023-12-20 09:09:56 │ │                    │   │   'side_food': '.',                             │ │
2023-12-20 09:09:56 │ │                    │   │   'steps': '1. *Passez directement à l’étape 2  │ │
2023-12-20 09:09:56 │ │                    si vous utilisez une boîte de tomates pelées*'+797,   │ │
2023-12-20 09:09:56 │ │                    │   │   ... +5                                        │ │
2023-12-20 09:09:56 │ │                    │   },                                                │ │
2023-12-20 09:09:56 │ │                    │   {                                                 │ │
2023-12-20 09:09:56 │ │                    │   │   'id': 4,                                      │ │
2023-12-20 09:09:56 │ │                    │   │   'name': 'Galettes de haricots rouges (steak   │ │
2023-12-20 09:09:56 │ │                    végétarien)',                                         │ │
2023-12-20 09:09:56 │ │                    │   │   'time': 15,                                   │ │
2023-12-20 09:09:56 │ │                    │   │   'difficulty': 'Facile',                       │ │
2023-12-20 09:09:56 │ │                    │   │   'budget': 'Bon Marché',                       │ │
2023-12-20 09:09:56 │ │                    │   │   'img':                                        │ │
2023-12-20 09:09:56 │ │                    '/images/recipes/Galette_haricots_rouges.png',        │ │
2023-12-20 09:09:56 │ │                    │   │   'review': '> ***L’avis 9 mois à croquer       │ │
2023-12-20 09:09:56 │ │                    :***\n> \n> - Les **haricots rouges** sont des        │ │
2023-12-20 09:09:56 │ │                    légumi'+393,                                          │ │
2023-12-20 09:09:56 │ │                    │   │   'nb_portions': 4,                             │ │
2023-12-20 09:09:56 │ │                    │   │   'side_food': '*Liste non-exhaustive (de       │ │
2023-12-20 09:09:56 │ │                    nouvelles idées viendront s’ajouter avec le           │ │
2023-12-20 09:09:56 │ │                    temps)*\n\n-'+537,                                    │ │
2023-12-20 09:09:56 │ │                    │   │   'steps': '1. Si vous utilisez des haricots en │ │
2023-12-20 09:09:56 │ │                    boîte, passez directement à l’étape 2\n    1.'+894,   │ │
2023-12-20 09:09:56 │ │                    │   │   ... +5                                        │ │
2023-12-20 09:09:56 │ │                    │   },                                                │ │
2023-12-20 09:09:56 │ │                    │   {                                                 │ │
2023-12-20 09:09:56 │ │                    │   │   'id': 5,                                      │ │
2023-12-20 09:09:56 │ │                    │   │   'name': 'Filet de poulet façon basquaise',    │ │
2023-12-20 09:09:56 │ │                    │   │   'time': 40,                                   │ │
2023-12-20 09:09:56 │ │                    │   │   'difficulty': 'Facile',                       │ │
2023-12-20 09:09:56 │ │                    │   │   'budget': 'Bon Marché',                       │ │
2023-12-20 09:09:56 │ │                    │   │   'img':                                        │ │
2023-12-20 09:09:56 │ │                    '/images/recipes/Poulet_basquaise.png',               │ │
2023-12-20 09:09:56 │ │                    │   │   'review': '> ***L’avis 9 mois à croquer       │ │
2023-12-20 09:09:56 │ │                    :***\n> \n> - Une recette légère qui mélange          │ │
2023-12-20 09:09:56 │ │                    **poulet'+444,                                        │ │
2023-12-20 09:09:56 │ │                    │   │   'nb_portions': 4,                             │ │
2023-12-20 09:09:56 │ │                    │   │   'side_food': '*Liste non-exhaustive (de       │ │
2023-12-20 09:09:56 │ │                    nouvelles idées viendront s’ajouter avec le           │ │
2023-12-20 09:09:56 │ │                    temps)*\n\n-'+218,                                    │ │
2023-12-20 09:09:56 │ │                    │   │   'steps': '## \n\n1. Couper les filets de      │ │
2023-12-20 09:09:56 │ │                    poulet\xa0en morceaux. Saler légèrement et saupoudrer │ │
2023-12-20 09:09:56 │ │                    '+910,                                                │ │
2023-12-20 09:09:56 │ │                    │   │   ... +5                                        │ │
2023-12-20 09:09:56 │ │                    │   },                                                │ │
2023-12-20 09:09:56 │ │                    │   {                                                 │ │
2023-12-20 09:09:56 │ │                    │   │   'id': 6,                                      │ │
2023-12-20 09:09:56 │ │                    │   │   'name': 'Pâtes à la courge et aux pois        │ │
2023-12-20 09:09:56 │ │                    chiches',                                             │ │
2023-12-20 09:09:56 │ │                    │   │   'time': 25,                                   │ │
2023-12-20 09:09:56 │ │                    │   │   'difficulty': 'Facile',                       │ │
2023-12-20 09:09:56 │ │                    │   │   'budget': 'Bon Marché',                       │ │
2023-12-20 09:09:56 │ │                    │   │   'img':                                        │ │
2023-12-20 09:09:56 │ │                    '/images/recipes/Pates_courges_poischiches.png',      │ │
2023-12-20 09:09:56 │ │                    │   │   'review': '> ***L’avis 9 mois à croquer       │ │
2023-12-20 09:09:56 │ │                    :***\n> \n> - Une recette **vegan,** très facile à    │ │
2023-12-20 09:09:56 │ │                    pr'+480,                                              │ │
2023-12-20 09:09:56 │ │                    │   │   'nb_portions': 4,                             │ │
2023-12-20 09:09:56 │ │                    │   │   'side_food': '.',                             │ │
2023-12-20 09:09:56 │ │                    │   │   'steps': '1. Peler la courge et la couper en  │ │
2023-12-20 09:09:56 │ │                    dés (*s’il s’agit d’un potimarron, il est pos'+862,   │ │
2023-12-20 09:09:56 │ │                    │   │   ... +5                                        │ │
2023-12-20 09:09:56 │ │                    │   },                                                │ │
2023-12-20 09:09:56 │ │                    │   {                                                 │ │
2023-12-20 09:09:56 │ │                    │   │   'id': 7,                                      │ │
2023-12-20 09:09:56 │ │                    │   │   'name': 'Maquereaux panés aux amandes',       │ │
2023-12-20 09:09:56 │ │                    │   │   'time': 60,                                   │ │
2023-12-20 09:09:56 │ │                    │   │   'difficulty': 'Facile',                       │ │
2023-12-20 09:09:56 │ │                    │   │   'budget': 'Bon Marché',                       │ │
2023-12-20 09:09:56 │ │                    │   │   'img':                                        │ │
2023-12-20 09:09:56 │ │                    '/images/recipes/Maquereaux_panes_amandes.png',       │ │
2023-12-20 09:09:56 │ │                    │   │   'review': '> ***L’avis 9 mois à croquer       │ │
2023-12-20 09:09:56 │ │                    :***\n> \n> - Une recette qui contribue à la          │ │
2023-12-20 09:09:56 │ │                    **consom'+470,                                        │ │
2023-12-20 09:09:56 │ │                    │   │   'nb_portions': 4,                             │ │
2023-12-20 09:09:56 │ │                    │   │   'side_food': '*Liste non-exhaustive (de       │ │
2023-12-20 09:09:56 │ │                    nouvelles idées viendront s’ajouter avec le           │ │
2023-12-20 09:09:56 │ │                    temps)*\n\n-'+358,                                    │ │
2023-12-20 09:09:56 │ │                    │   │   'steps': '1. Préchauffer le four à 180°C\n2.  │ │
2023-12-20 09:09:56 │ │                    Laver les filets de maquereaux et les sécher s'+541,  │ │
2023-12-20 09:09:56 │ │                    │   │   ... +5                                        │ │
2023-12-20 09:09:56 │ │                    │   },                                                │ │
2023-12-20 09:09:56 │ │                    │   {                                                 │ │
2023-12-20 09:09:56 │ │                    │   │   'id': 8,                                      │ │
2023-12-20 09:09:56 │ │                    │   │   'name': 'Pâtes aux filets de maquereaux et    │ │
2023-12-20 09:09:56 │ │                    tomates',                                             │ │
2023-12-20 09:09:56 │ │                    │   │   'time': 15,                                   │ │
2023-12-20 09:09:56 │ │                    │   │   'difficulty': 'Facile',                       │ │
2023-12-20 09:09:56 │ │                    │   │   'budget': 'Bon Marché',                       │ │
2023-12-20 09:09:56 │ │                    │   │   'img':                                        │ │
2023-12-20 09:09:56 │ │                    '/images/recipes/Pates_filets_maquereau.png',         │ │
2023-12-20 09:09:56 │ │                    │   │   'review': '> ***L’avis 9 mois à croquer       │ │
2023-12-20 09:09:56 │ │                    :***\n> \n> - Une recette équilibrée, très facile à   │ │
2023-12-20 09:09:56 │ │                    p'+414,                                               │ │
2023-12-20 09:09:56 │ │                    │   │   'nb_portions': 4,                             │ │
2023-12-20 09:09:56 │ │                    │   │   'side_food': '.',                             │ │
2023-12-20 09:09:56 │ │                    │   │   'steps': '1. Faire chauffer une casserole     │ │
2023-12-20 09:09:56 │ │                    d’eau salée jusqu’à ébullition.\n2. Dès que           │ │
2023-12-20 09:09:56 │ │                    l’eau'+484,                                           │ │
2023-12-20 09:09:56 │ │                    │   │   ... +5                                        │ │
2023-12-20 09:09:56 │ │                    │   },                                                │ │
2023-12-20 09:09:56 │ │                    │   {                                                 │ │
2023-12-20 09:09:56 │ │                    │   │   'id': 9,                                      │ │
2023-12-20 09:09:56 │ │                    │   │   'name': 'Velouté de panais aux noisettes',    │ │
2023-12-20 09:09:56 │ │                    │   │   'time': 40,                                   │ │
2023-12-20 09:09:56 │ │                    │   │   'difficulty': 'Facile',                       │ │
2023-12-20 09:09:56 │ │                    │   │   'budget': 'Bon Marché',                       │ │
2023-12-20 09:09:56 │ │                    │   │   'img':                                        │ │
2023-12-20 09:09:56 │ │                    '/images/recipes/Veloute_panais_noisettes.png',       │ │
2023-12-20 09:09:56 │ │                    │   │   'review': '> ***L’avis 9 mois à croquer       │ │
2023-12-20 09:09:56 │ │                    :***\n> \n> - Une recette parfaite pour une entrée    │ │
2023-12-20 09:09:56 │ │                    qu'+288,                                              │ │
2023-12-20 09:09:56 │ │                    │   │   'nb_portions': 4,                             │ │
2023-12-20 09:09:56 │ │                    │   │   'side_food': '.',                             │ │
2023-12-20 09:09:56 │ │                    │   │   'steps': '1. Laver, éplucher et coupe le      │ │
2023-12-20 09:09:56 │ │                    panais en dés.\n2. Emincer l’oignon.\n3. Faire        │ │
2023-12-20 09:09:56 │ │                    chau'+807,                                            │ │
2023-12-20 09:09:56 │ │                    │   │   ... +5                                        │ │
2023-12-20 09:09:56 │ │                    │   },                                                │ │
2023-12-20 09:09:56 │ │                    │   {                                                 │ │
2023-12-20 09:09:56 │ │                    │   │   'id': 10,                                     │ │
2023-12-20 09:09:56 │ │                    │   │   'name': 'Flan à la carotte et à la            │ │
2023-12-20 09:09:56 │ │                    coriandre',                                           │ │
2023-12-20 09:09:56 │ │                    │   │   'time': 45,                                   │ │
2023-12-20 09:09:56 │ │                    │   │   'difficulty': 'Facile',                       │ │
2023-12-20 09:09:56 │ │                    │   │   'budget': 'Bon Marché',                       │ │
2023-12-20 09:09:56 │ │                    │   │   'img':                                        │ │
2023-12-20 09:09:56 │ │                    '/images/recipes/Flan_carotte_coriandre.png',         │ │
2023-12-20 09:09:56 │ │                    │   │   'review': '> ***L’avis 9 mois à croquer       │ │
2023-12-20 09:09:56 │ │                    :***\n> \n> - Une recette très facile à préparer      │ │
2023-12-20 09:09:56 │ │                    pour'+196,                                            │ │
2023-12-20 09:09:56 │ │                    │   │   'nb_portions': 4,                             │ │
2023-12-20 09:09:56 │ │                    │   │   'side_food': '- Une tranche de pain complet   │ │
2023-12-20 09:09:56 │ │                    et de la salade (roquette, laitue, mâche)',           │ │
2023-12-20 09:09:56 │ │                    │   │   'steps': '1. Préchauffer le four à 180°C.\n2. │ │
2023-12-20 09:09:56 │ │                    Eplucher les carottes, les laver, les couper '+656,   │ │
2023-12-20 09:09:56 │ │                    │   │   ... +5                                        │ │
2023-12-20 09:09:56 │ │                    │   },                                                │ │
2023-12-20 09:09:56 │ │                    │   ... +41                                           │ │
2023-12-20 09:09:56 │ │                    ]                                                     │ │
2023-12-20 09:09:56 │ │             lock = <asyncio.locks.Lock object at 0x7f2d78fd0950          │ │
2023-12-20 09:09:56 │ │                    [unlocked]>                                           │ │
2023-12-20 09:09:56 │ │            meili = <meilisync.meili.Meili object at 0x7f2d78b6fe60>      │ │
2023-12-20 09:09:56 │ │   meili_settings = MeiliSearch(                                          │ │
2023-12-20 09:09:56 │ │                    │   api_url='http://192.168.1.12:7700',               │ │
2023-12-20 09:09:56 │ │                    │                                                     │ │
2023-12-20 09:09:56 │ │                    api_key='5301917b2d43ecc145ac18a3151361a58d192f5d8b9… │ │
2023-12-20 09:09:56 │ │                    │   insert_size=1000,                                 │ │
2023-12-20 09:09:56 │ │                    │   insert_interval=10                                │ │
2023-12-20 09:09:56 │ │                    )                                                     │ │
2023-12-20 09:09:56 │ │         progress = <meilisync.progress.file.File object at               │ │
2023-12-20 09:09:56 │ │                    0x7f2d78b6e5a0>                                       │ │
2023-12-20 09:09:56 │ │         settings = Settings(                                             │ │
2023-12-20 09:09:56 │ │                    │   plugins=['meilisync.plugin.Plugin'],              │ │
2023-12-20 09:09:56 │ │                    │   progress=Progress(                                │ │
2023-12-20 09:09:56 │ │                    │   │   type=<ProgressType.file: 'file'>,             │ │
2023-12-20 09:09:56 │ │                    │   │   path='progress.json'                          │ │
2023-12-20 09:09:56 │ │                    │   ),                                                │ │
2023-12-20 09:09:56 │ │                    │   debug=True,                                       │ │
2023-12-20 09:09:56 │ │                    │   source=Source(                                    │ │
2023-12-20 09:09:56 │ │                    │   │   type=<SourceType.mysql: 'mysql'>,             │ │
2023-12-20 09:09:56 │ │                    │   │   database='9mois',                             │ │
2023-12-20 09:09:56 │ │                    │   │   host='192.168.1.12',                          │ │
2023-12-20 09:09:56 │ │                    │   │   port=3307,                                    │ │
2023-12-20 09:09:56 │ │                    │   │   user='root',                                  │ │
2023-12-20 09:09:56 │ │                    │   │   password='root'                               │ │
2023-12-20 09:09:56 │ │                    │   ),                                                │ │
2023-12-20 09:09:56 │ │                    │   meilisearch=MeiliSearch(                          │ │
2023-12-20 09:09:56 │ │                    │   │   api_url='http://192.168.1.12:7700',           │ │
2023-12-20 09:09:56 │ │                    │   │                                                 │ │
2023-12-20 09:09:56 │ │                    api_key='5301917b2d43ecc145ac18a3151361a58d192f5d8b9… │ │
2023-12-20 09:09:56 │ │                    │   │   insert_size=1000,                             │ │
2023-12-20 09:09:56 │ │                    │   │   insert_interval=10                            │ │
2023-12-20 09:09:56 │ │                    │   ),                                                │ │
2023-12-20 09:09:56 │ │                    │   sync=[                                            │ │
2023-12-20 09:09:56 │ │                    │   │   Sync(                                         │ │
2023-12-20 09:09:56 │ │                    │   │   │   plugins=['meilisync.plugin.Plugin'],      │ │
2023-12-20 09:09:56 │ │                    │   │   │   table='recipes',                          │ │
2023-12-20 09:09:56 │ │                    │   │   │   pk='id',                                  │ │
2023-12-20 09:09:56 │ │                    │   │   │   full=True,                                │ │
2023-12-20 09:09:56 │ │                    │   │   │   index='recipes-collections',              │ │
2023-12-20 09:09:56 │ │                    │   │   │   fields=None                               │ │
2023-12-20 09:09:56 │ │                    │   │   )                                             │ │
2023-12-20 09:09:56 │ │                    │   ],                                                │ │
2023-12-20 09:09:56 │ │                    │   sentry=Sentry(                                    │ │
2023-12-20 09:09:56 │ │                    │   │   dsn='',                                       │ │
2023-12-20 09:09:56 │ │                    │   │   environment='developement'                    │ │
2023-12-20 09:09:56 │ │                    │   )                                                 │ │
2023-12-20 09:09:56 │ │                    )                                                     │ │
2023-12-20 09:09:56 │ │           source = <meilisync.source.mysql.MySQL object at               │ │
2023-12-20 09:09:56 │ │                    0x7f2d78fd28a0>                                       │ │
2023-12-20 09:09:56 │ │             sync = Sync(                                                 │ │
2023-12-20 09:09:56 │ │                    │   plugins=['meilisync.plugin.Plugin'],              │ │
2023-12-20 09:09:56 │ │                    │   table='recipes',                                  │ │
2023-12-20 09:09:56 │ │                    │   pk='id',                                          │ │
2023-12-20 09:09:56 │ │                    │   full=True,                                        │ │
2023-12-20 09:09:56 │ │                    │   index='recipes-collections',                      │ │
2023-12-20 09:09:56 │ │                    │   fields=None                                       │ │
2023-12-20 09:09:56 │ │                    )                                                     │ │
2023-12-20 09:09:56 │ ╰──────────────────────────────────────────────────────────────────────────╯ │
2023-12-20 09:09:56 │                                                                              │
2023-12-20 09:09:56 │ /meilisync/meilisync/meili.py:33 in add_full_data                            │
2023-12-20 09:09:56 │                                                                              │
2023-12-20 09:09:56 │    30 │   async def add_full_data(self, sync: Sync, data: AsyncGenerator):   │
2023-12-20 09:09:56 │    31 │   │   tasks = []                                                     │
2023-12-20 09:09:56 │    32 │   │   count = 0                                                      │
2023-12-20 09:09:56 │ ❱  33 │   │   async for items in data:                                       │
2023-12-20 09:09:56 │    34 │   │   │   count += len(items)                                        │
2023-12-20 09:09:56 │    35 │   │   │   events = [Event(type=EventType.create, data=item) for item │
2023-12-20 09:09:56 │    36 │   │   │   task = await self.handle_events_by_type(sync, events, Even │
2023-12-20 09:09:56 │                                                                              │
2023-12-20 09:09:56 │ ╭───────────────────────────────── locals ─────────────────────────────────╮ │
2023-12-20 09:09:56 │ │ count = 0                                                                │ │
2023-12-20 09:09:56 │ │  data = [                                                                │ │
2023-12-20 09:09:56 │ │         │   {                                                            │ │
2023-12-20 09:09:56 │ │         │   │   'id': 1,                                                 │ │
2023-12-20 09:09:56 │ │         │   │   'name': 'Courge rôtie',                                  │ │
2023-12-20 09:09:56 │ │         │   │   'time': 55,                                              │ │
2023-12-20 09:09:56 │ │         │   │   'difficulty': 'Facile',                                  │ │
2023-12-20 09:09:56 │ │         │   │   'budget': 'Bon Marché',                                  │ │
2023-12-20 09:09:56 │ │         │   │   'img': '/images/recipes/courge_rotie.jpg',               │ │
2023-12-20 09:09:56 │ │         │   │   'review': '> ***L’avis 9 mois à croquer :***\n> \n> -    │ │
2023-12-20 09:09:56 │ │         Une recette qui contribue aux **apports'+463,                    │ │
2023-12-20 09:09:56 │ │         │   │   'nb_portions': 4,                                        │ │
2023-12-20 09:09:56 │ │         │   │   'side_food': '*Liste non-exhaustive (de nouvelles idées  │ │
2023-12-20 09:09:56 │ │         viendront s’ajouter avec le temps)*\n\n-'+351,                   │ │
2023-12-20 09:09:56 │ │         │   │   'steps': '1. Préchauffer le four à 190°C\n2. Couper la   │ │
2023-12-20 09:09:56 │ │         courge en 2 et retirer les pépins\n3.'+427,                      │ │
2023-12-20 09:09:56 │ │         │   │   ... +5                                                   │ │
2023-12-20 09:09:56 │ │         │   },                                                           │ │
2023-12-20 09:09:56 │ │         │   {                                                            │ │
2023-12-20 09:09:56 │ │         │   │   'id': 2,                                                 │ │
2023-12-20 09:09:56 │ │         │   │   'name': 'Muffin à la carotte et aux noix',               │ │
2023-12-20 09:09:56 │ │         │   │   'time': 10,                                              │ │
2023-12-20 09:09:56 │ │         │   │   'difficulty': 'Facile',                                  │ │
2023-12-20 09:09:56 │ │         │   │   'budget': 'Bon Marché',                                  │ │
2023-12-20 09:09:56 │ │         │   │   'img': '/images/recipes/Muffins_carottes_noix.png',      │ │
2023-12-20 09:09:56 │ │         │   │   'review': '> ***L’avis 9 mois à croquer :***\n> \n> - Un │ │
2023-12-20 09:09:56 │ │         petit plaisir à base de **carottes**'+364,                       │ │
2023-12-20 09:09:56 │ │         │   │   'nb_portions': 10,                                       │ │
2023-12-20 09:09:56 │ │         │   │   'side_food': '',                                         │ │
2023-12-20 09:09:56 │ │         │   │   'steps': '1. Préchauffer le four à 180°C (th.6)\n2.      │ │
2023-12-20 09:09:56 │ │         Eplucher les carottes, les laver puis l'+520,                    │ │
2023-12-20 09:09:56 │ │         │   │   ... +5                                                   │ │
2023-12-20 09:09:56 │ │         │   },                                                           │ │
2023-12-20 09:09:56 │ │         │   {                                                            │ │
2023-12-20 09:09:56 │ │         │   │   'id': 3,                                                 │ │
2023-12-20 09:09:56 │ │         │   │   'name': 'Boulghour à la tomate et aux pois chiches',     │ │
2023-12-20 09:09:56 │ │         │   │   'time': 35,                                              │ │
2023-12-20 09:09:56 │ │         │   │   'difficulty': 'Facile',                                  │ │
2023-12-20 09:09:56 │ │         │   │   'budget': 'Bon Marché',                                  │ │
2023-12-20 09:09:56 │ │         │   │   'img':                                                   │ │
2023-12-20 09:09:56 │ │         '/images/recipes/Boulghour_tomates_poischiches.png',             │ │
2023-12-20 09:09:56 │ │         │   │   'review': '> ***L’avis 9 mois à croquer :***\n> \n> -    │ │
2023-12-20 09:09:56 │ │         Une recette de **plat complet** avec de'+421,                    │ │
2023-12-20 09:09:56 │ │         │   │   'nb_portions': 4,                                        │ │
2023-12-20 09:09:56 │ │         │   │   'side_food': '.',                                        │ │
2023-12-20 09:09:56 │ │         │   │   'steps': '1. *Passez directement à l’étape 2 si vous     │ │
2023-12-20 09:09:56 │ │         utilisez une boîte de tomates pelées*'+797,                      │ │
2023-12-20 09:09:56 │ │         │   │   ... +5                                                   │ │
2023-12-20 09:09:56 │ │         │   },                                                           │ │
2023-12-20 09:09:56 │ │         │   {                                                            │ │
2023-12-20 09:09:56 │ │         │   │   'id': 4,                                                 │ │
2023-12-20 09:09:56 │ │         │   │   'name': 'Galettes de haricots rouges (steak              │ │
2023-12-20 09:09:56 │ │         végétarien)',                                                    │ │
2023-12-20 09:09:56 │ │         │   │   'time': 15,                                              │ │
2023-12-20 09:09:56 │ │         │   │   'difficulty': 'Facile',                                  │ │
2023-12-20 09:09:56 │ │         │   │   'budget': 'Bon Marché',                                  │ │
2023-12-20 09:09:56 │ │         │   │   'img': '/images/recipes/Galette_haricots_rouges.png',    │ │
2023-12-20 09:09:56 │ │         │   │   'review': '> ***L’avis 9 mois à croquer :***\n> \n> -    │ │
2023-12-20 09:09:56 │ │         Les **haricots rouges** sont des légumi'+393,                    │ │
2023-12-20 09:09:56 │ │         │   │   'nb_portions': 4,                                        │ │
2023-12-20 09:09:56 │ │         │   │   'side_food': '*Liste non-exhaustive (de nouvelles idées  │ │
2023-12-20 09:09:56 │ │         viendront s’ajouter avec le temps)*\n\n-'+537,                   │ │
2023-12-20 09:09:56 │ │         │   │   'steps': '1. Si vous utilisez des haricots en boîte,     │ │
2023-12-20 09:09:56 │ │         passez directement à l’étape 2\n    1.'+894,                     │ │
2023-12-20 09:09:56 │ │         │   │   ... +5                                                   │ │
2023-12-20 09:09:56 │ │         │   },                                                           │ │
2023-12-20 09:09:56 │ │         │   {                                                            │ │
2023-12-20 09:09:56 │ │         │   │   'id': 5,                                                 │ │
2023-12-20 09:09:56 │ │         │   │   'name': 'Filet de poulet façon basquaise',               │ │
2023-12-20 09:09:56 │ │         │   │   'time': 40,                                              │ │
2023-12-20 09:09:56 │ │         │   │   'difficulty': 'Facile',                                  │ │
2023-12-20 09:09:56 │ │         │   │   'budget': 'Bon Marché',                                  │ │
2023-12-20 09:09:56 │ │         │   │   'img': '/images/recipes/Poulet_basquaise.png',           │ │
2023-12-20 09:09:56 │ │         │   │   'review': '> ***L’avis 9 mois à croquer :***\n> \n> -    │ │
2023-12-20 09:09:56 │ │         Une recette légère qui mélange **poulet'+444,                    │ │
2023-12-20 09:09:56 │ │         │   │   'nb_portions': 4,                                        │ │
2023-12-20 09:09:56 │ │         │   │   'side_food': '*Liste non-exhaustive (de nouvelles idées  │ │
2023-12-20 09:09:56 │ │         viendront s’ajouter avec le temps)*\n\n-'+218,                   │ │
2023-12-20 09:09:56 │ │         │   │   'steps': '## \n\n1. Couper les filets de poulet\xa0en    │ │
2023-12-20 09:09:56 │ │         morceaux. Saler légèrement et saupoudrer '+910,                  │ │
2023-12-20 09:09:56 │ │         │   │   ... +5                                                   │ │
2023-12-20 09:09:56 │ │         │   },                                                           │ │
2023-12-20 09:09:56 │ │         │   {                                                            │ │
2023-12-20 09:09:56 │ │         │   │   'id': 6,                                                 │ │
2023-12-20 09:09:56 │ │         │   │   'name': 'Pâtes à la courge et aux pois chiches',         │ │
2023-12-20 09:09:56 │ │         │   │   'time': 25,                                              │ │
2023-12-20 09:09:56 │ │         │   │   'difficulty': 'Facile',                                  │ │
2023-12-20 09:09:56 │ │         │   │   'budget': 'Bon Marché',                                  │ │
2023-12-20 09:09:56 │ │         │   │   'img': '/images/recipes/Pates_courges_poischiches.png',  │ │
2023-12-20 09:09:56 │ │         │   │   'review': '> ***L’avis 9 mois à croquer :***\n> \n> -    │ │
2023-12-20 09:09:56 │ │         Une recette **vegan,** très facile à pr'+480,                    │ │
2023-12-20 09:09:56 │ │         │   │   'nb_portions': 4,                                        │ │
2023-12-20 09:09:56 │ │         │   │   'side_food': '.',                                        │ │
2023-12-20 09:09:56 │ │         │   │   'steps': '1. Peler la courge et la couper en dés (*s’il  │ │
2023-12-20 09:09:56 │ │         s’agit d’un potimarron, il est pos'+862,                         │ │
2023-12-20 09:09:56 │ │         │   │   ... +5                                                   │ │
2023-12-20 09:09:56 │ │         │   },                                                           │ │
2023-12-20 09:09:56 │ │         │   {                                                            │ │
2023-12-20 09:09:56 │ │         │   │   'id': 7,                                                 │ │
2023-12-20 09:09:56 │ │         │   │   'name': 'Maquereaux panés aux amandes',                  │ │
2023-12-20 09:09:56 │ │         │   │   'time': 60,                                              │ │
2023-12-20 09:09:56 │ │         │   │   'difficulty': 'Facile',                                  │ │
2023-12-20 09:09:56 │ │         │   │   'budget': 'Bon Marché',                                  │ │
2023-12-20 09:09:56 │ │         │   │   'img': '/images/recipes/Maquereaux_panes_amandes.png',   │ │
2023-12-20 09:09:56 │ │         │   │   'review': '> ***L’avis 9 mois à croquer :***\n> \n> -    │ │
2023-12-20 09:09:56 │ │         Une recette qui contribue à la **consom'+470,                    │ │
2023-12-20 09:09:56 │ │         │   │   'nb_portions': 4,                                        │ │
2023-12-20 09:09:56 │ │         │   │   'side_food': '*Liste non-exhaustive (de nouvelles idées  │ │
2023-12-20 09:09:56 │ │         viendront s’ajouter avec le temps)*\n\n-'+358,                   │ │
2023-12-20 09:09:56 │ │         │   │   'steps': '1. Préchauffer le four à 180°C\n2. Laver les   │ │
2023-12-20 09:09:56 │ │         filets de maquereaux et les sécher s'+541,                       │ │
2023-12-20 09:09:56 │ │         │   │   ... +5                                                   │ │
2023-12-20 09:09:56 │ │         │   },                                                           │ │
2023-12-20 09:09:56 │ │         │   {                                                            │ │
2023-12-20 09:09:56 │ │         │   │   'id': 8,                                                 │ │
2023-12-20 09:09:56 │ │         │   │   'name': 'Pâtes aux filets de maquereaux et tomates',     │ │
2023-12-20 09:09:56 │ │         │   │   'time': 15,                                              │ │
2023-12-20 09:09:56 │ │         │   │   'difficulty': 'Facile',                                  │ │
2023-12-20 09:09:56 │ │         │   │   'budget': 'Bon Marché',                                  │ │
2023-12-20 09:09:56 │ │         │   │   'img': '/images/recipes/Pates_filets_maquereau.png',     │ │
2023-12-20 09:09:56 │ │         │   │   'review': '> ***L’avis 9 mois à croquer :***\n> \n> -    │ │
2023-12-20 09:09:56 │ │         Une recette équilibrée, très facile à p'+414,                    │ │
2023-12-20 09:09:56 │ │         │   │   'nb_portions': 4,                                        │ │
2023-12-20 09:09:56 │ │         │   │   'side_food': '.',                                        │ │
2023-12-20 09:09:56 │ │         │   │   'steps': '1. Faire chauffer une casserole d’eau salée    │ │
2023-12-20 09:09:56 │ │         jusqu’à ébullition.\n2. Dès que l’eau'+484,                      │ │
2023-12-20 09:09:56 │ │         │   │   ... +5                                                   │ │
2023-12-20 09:09:56 │ │         │   },                                                           │ │
2023-12-20 09:09:56 │ │         │   {                                                            │ │
2023-12-20 09:09:56 │ │         │   │   'id': 9,                                                 │ │
2023-12-20 09:09:56 │ │         │   │   'name': 'Velouté de panais aux noisettes',               │ │
2023-12-20 09:09:56 │ │         │   │   'time': 40,                                              │ │
2023-12-20 09:09:56 │ │         │   │   'difficulty': 'Facile',                                  │ │
2023-12-20 09:09:56 │ │         │   │   'budget': 'Bon Marché',                                  │ │
2023-12-20 09:09:56 │ │         │   │   'img': '/images/recipes/Veloute_panais_noisettes.png',   │ │
2023-12-20 09:09:56 │ │         │   │   'review': '> ***L’avis 9 mois à croquer :***\n> \n> -    │ │
2023-12-20 09:09:56 │ │         Une recette parfaite pour une entrée qu'+288,                    │ │
2023-12-20 09:09:56 │ │         │   │   'nb_portions': 4,                                        │ │
2023-12-20 09:09:56 │ │         │   │   'side_food': '.',                                        │ │
2023-12-20 09:09:56 │ │         │   │   'steps': '1. Laver, éplucher et coupe le panais en       │ │
2023-12-20 09:09:56 │ │         dés.\n2. Emincer l’oignon.\n3. Faire chau'+807,                  │ │
2023-12-20 09:09:56 │ │         │   │   ... +5                                                   │ │
2023-12-20 09:09:56 │ │         │   },                                                           │ │
2023-12-20 09:09:56 │ │         │   {                                                            │ │
2023-12-20 09:09:56 │ │         │   │   'id': 10,                                                │ │
2023-12-20 09:09:56 │ │         │   │   'name': 'Flan à la carotte et à la coriandre',           │ │
2023-12-20 09:09:56 │ │         │   │   'time': 45,                                              │ │
2023-12-20 09:09:56 │ │         │   │   'difficulty': 'Facile',                                  │ │
2023-12-20 09:09:56 │ │         │   │   'budget': 'Bon Marché',                                  │ │
2023-12-20 09:09:56 │ │         │   │   'img': '/images/recipes/Flan_carotte_coriandre.png',     │ │
2023-12-20 09:09:56 │ │         │   │   'review': '> ***L’avis 9 mois à croquer :***\n> \n> -    │ │
2023-12-20 09:09:56 │ │         Une recette très facile à préparer pour'+196,                    │ │
2023-12-20 09:09:56 │ │         │   │   'nb_portions': 4,                                        │ │
2023-12-20 09:09:56 │ │         │   │   'side_food': '- Une tranche de pain complet et de la     │ │
2023-12-20 09:09:56 │ │         salade (roquette, laitue, mâche)',                               │ │
2023-12-20 09:09:56 │ │         │   │   'steps': '1. Préchauffer le four à 180°C.\n2. Eplucher   │ │
2023-12-20 09:09:56 │ │         les carottes, les laver, les couper '+656,                       │ │
2023-12-20 09:09:56 │ │         │   │   ... +5                                                   │ │
2023-12-20 09:09:56 │ │         │   },                                                           │ │
2023-12-20 09:09:56 │ │         │   ... +41                                                      │ │
2023-12-20 09:09:56 │ │         ]                                                                │ │
2023-12-20 09:09:56 │ │  self = <meilisync.meili.Meili object at 0x7f2d78b6fe60>                 │ │
2023-12-20 09:09:56 │ │  sync = Sync(                                                            │ │
2023-12-20 09:09:56 │ │         │   plugins=['meilisync.plugin.Plugin'],                         │ │
2023-12-20 09:09:56 │ │         │   table='recipes',                                             │ │
2023-12-20 09:09:56 │ │         │   pk='id',                                                     │ │
2023-12-20 09:09:56 │ │         │   full=True,                                                   │ │
2023-12-20 09:09:56 │ │         │   index='recipes-collections',                                 │ │
2023-12-20 09:09:56 │ │         │   fields=None                                                  │ │
2023-12-20 09:09:56 │ │         )                                                                │ │
2023-12-20 09:09:56 │ │ tasks = []                                                               │ │
2023-12-20 09:09:56 │ ╰──────────────────────────────────────────────────────────────────────────╯ │
2023-12-20 09:09:56 ╰──────────────────────────────────────────────────────────────────────────────╯
2023-12-20 09:09:56 TypeError: 'async for' requires an object with __aiter__ method, got list
ownedge13 commented 8 months ago

also i have try on a mysql and on a mariadb and i have try my database and also the free database sakila

jonaskahn commented 8 months ago

I also got this issue. I tried with redis and file

long2ice commented 8 months ago

try latest source code

ownedge13 commented 8 months ago

if i have some time i will test with the 0.1.2 source code in some days, but since then we have gone with homemade solution tfidf based without meilisearch.

tarasyarema commented 8 months ago

same issue here

glaarg-robert commented 8 months ago

I am getting the same issue as well.

tarasyarema commented 8 months ago

Been trying from the main branch and running it as dev on a macos 14, so my guess that is something to do with the version of the deps or the arch. Will try to make it work locally and update on my case.

@ownedge13 in which arch have you worked on this library? I see the docker image in the meili docs uses the platform linux/x86_64, link here.

ownedge13 commented 8 months ago

wsl2 / docker desktop on a windows 11 23H2 so iirc it's an ubuntu under the hood

piano1029 commented 8 months ago

Experiencing exactly the same issue, no changes in behaviour for the dev, main and latest tags for the container image. I'm using postgres

yhy0 commented 8 months ago

I am getting the same issue as well. DB: Mysql The full field in the sync is specified as true,and there is data in the database table.

anh1 commented 7 months ago

i'm having same issue.

TheoCouss commented 7 months ago

I'm having the same problem. I tried building it from both the main and dev branches, but it's still showing the same error. Do you know if this project is still being updated, or should we think about creating our own tool to sync the data?

long2ice commented 7 months ago

Fixed, please try latest source code.

TheoCouss commented 7 months ago

I just tested the dev branch, and everything is working now. Thank you!

tarasyarema commented 7 months ago

Will you be able to update the docker images to support the latest changes?

TheoCouss commented 7 months ago

I just tested the dev branch, and everything is working now. Thank you!

I spoke a little too soon; I just encountered a new bug moments ago.

long2ice commented 7 months ago

If there are any others issues, feel free to reopen.

bfontaine commented 6 months ago

If there are any others issues, feel free to reopen.

I think it’s not possible to reopen an issue once the repo owner has closed it. According to this comment the issue still exists.

azamat-jsp commented 6 months ago

2024-03-01 13:10:52 TypeError: 'async for' requires an object with aiter method, got list

the same error error occurs when I add several tables in config -> sync