long2ice/meilisync

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

ownedge13 opened this issue · 21 comments

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:

  • table: articles
    index: MEILISEARCH_INDEX_NAME_1
    full: true
    pk: id

progress:
type: file

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.

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

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

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

try latest source code

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.

same issue here

I am getting the same issue as well.

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.

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

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

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.

i'm having same issue.

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?

Fixed, please try latest source code.

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

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

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.

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

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.

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