Похоже, что Dramatiq с asyncio работает только с одним работником.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Похоже, что Dramatiq с asyncio работает только с одним работником.

Сообщение Anonymous »

Я пытаюсь запустить несколько заданий параллельно.

Когда я определяю актера как функцию синхронизации, он использует разных исполнителей.

Но когда функции являются асинхронными он использует только один поток (рабочий).

Я вообще понимаю разницу между асинхронным параллелизмом и многопоточностью/multiprocessing, но есть ли способ использовать всех созданных рабочих процессов с асинхронными актерами?
Например, если вы ограничены библиотекой, которую вы используете внутри актера.

Однако я не считаю, что синхронизация актера и создание нового цикла событий внутри него являются элегантным решением.
Код, который я использую:
redis_broker = RedisBroker(
host=settings.redis_url,
port=settings.redis_port,
db=settings.redis_db,
password=settings.redis_password,
middleware=[CurrentMessage()] # with AsyncIO() in async case
)
dramatiq.set_broker(redis_broker)

Актер синхронизации:
@dramatiq.actor
def jobs(param: int):
logger.info(f"Started {param}")
time.sleep(param)
logger.info(f"Ended {param}")

Асинхронный актер:
@dramatiq.actor
async def jobs(param: int):
logger.info(f"Started {param}")
await asyncio.sleep(param)
logger.info(f"Ended {param}")

И я запускаю его как:
g = group([
jobs.send(1),
jobs.send(2),
jobs.send(3),
]).run()

Результаты синхронизации:
[2024-10-11 02:38:42,251] [PID 420038] [Thread-3] [dramatiq] [INFO] Started 3
[2024-10-11 02:38:42,251] [PID 420038] [Thread-5] [dramatiq] [INFO] Started 2
[2024-10-11 02:38:42,251] [PID 420038] [Thread-6] [dramatiq] [INFO] Started 3
[2024-10-11 02:38:42,252] [PID 420038] [Thread-7] [dramatiq] [INFO] Started 1
[2024-10-11 02:38:42,252] [PID 420038] [Thread-8] [dramatiq] [INFO] Started 2
[2024-10-11 02:38:42,252] [PID 420038] [Thread-4] [dramatiq] [INFO] Started 1
[2024-10-11 02:38:43,253] [PID 420038] [Thread-7] [dramatiq] [INFO] Ended 1
[2024-10-11 02:38:43,254] [PID 420038] [Thread-4] [dramatiq] [INFO] Ended 1
[2024-10-11 02:38:44,254] [PID 420038] [Thread-5] [dramatiq] [INFO] Ended 2
[2024-10-11 02:38:44,254] [PID 420038] [Thread-8] [dramatiq] [INFO] Ended 2
[2024-10-11 02:38:45,255] [PID 420038] [Thread-6] [dramatiq] [INFO] Ended 3
[2024-10-11 02:38:45,255] [PID 420038] [Thread-3] [dramatiq] [INFO] Ended 3

Асинхронные результаты:
[2024-10-11 02:50:03,245] [PID 422276] [Thread-1] [dramatiq] [INFO] Started 3
[2024-10-11 02:50:03,245] [PID 422276] [Thread-1] [dramatiq] [INFO] Started 2
[2024-10-11 02:50:03,245] [PID 422276] [Thread-1] [dramatiq] [INFO] Started 3
[2024-10-11 02:50:03,245] [PID 422276] [Thread-1] [dramatiq] [INFO] Started 1
[2024-10-11 02:50:03,245] [PID 422276] [Thread-1] [dramatiq] [INFO] Started 2
[2024-10-11 02:50:03,245] [PID 422276] [Thread-1] [dramatiq] [INFO] Started 1
[2024-10-11 02:50:04,246] [PID 422276] [Thread-1] [dramatiq] [INFO] Ended 1
[2024-10-11 02:50:04,246] [PID 422276] [Thread-1] [dramatiq] [INFO] Ended 1
[2024-10-11 02:50:05,247] [PID 422276] [Thread-1] [dramatiq] [INFO] Ended 2
[2024-10-11 02:50:05,247] [PID 422276] [Thread-1] [dramatiq] [INFO] Ended 2
[2024-10-11 02:50:06,246] [PID 422276] [Thread-1] [dramatiq] [INFO] Ended 3
[2024-10-11 02:50:06,246] [PID 422276] [Thread-1] [dramatiq] [INFO] Ended 3


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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Dramatiq с asyncio, похоже, использует только одного работника
    Anonymous » » в форуме Python
    0 Ответы
    52 Просмотры
    Последнее сообщение Anonymous
  • Что я могу сделать, чтобы использовать Dramatiq в приложении Flask
    Anonymous » » в форуме Python
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Asyncio Async Funcitons вешает с Asyncio.gather. (Код работает без Asyncio.gather)
    Anonymous » » в форуме Python
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Проблемы с автономным сервисным работником iOS PWA/CacheStorage
    Anonymous » » в форуме IOS
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Что я должен иметь с прослушиваемым работником :: getNetwork ()?
    Anonymous » » в форуме Android
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous

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