ChatCrawlerпоиск по публичному Telegram Открыть приложение
T

Taskiq.py

396 участников
22 августа 2026
23 августа 2026
Да, короче это всё из-за kuberay, как я полагаю.
Короче, вот эти ребята, которые типа скейлят инференс, начали тазик юзать.
P
А от того поехало.
N
Ооо, круто, поздравляю! Я вижу, у тебя с мая х3 рост по использованиям
24 августа 2026
T
🎉 New Pull Request to taskiq-python/taskiq by @aticie ✨ fix: ValueError "Token was created in a different context" (#661) 📊 +23/-34 🌿 aticie:fix/opentelemetry-context-issues → master Fixes an issue that happens with OpenTelemetryMiddleware when a message is requeued with Context.requeue(). Context.requeue() uses self.broker.kick to kick a message to the broker which skips the Middleware pre-send and post-send invocations that kicker does here: taskiq/taskiq/kicker.py Lines 160 to 162 in ced1909 taskiq/taskiq/kicker.py Lines 168 to 170 in ced1909 Messages that are requeued with the same context variables will raise an error on post_save's .detach() because they are now running in a different async context. The message's lifecycle on OpenTelemetryMiddleware will be: • pre_send -> message.labels are injected with context here • post_send • pre_execute -> message.labels are extracted here and re-used • post_execute • requeue() happens -> skipping pre_send and post_send, therefore not renewing the context. • pre_execute -> context inferred from message.labels again • post_execute • post_save -> Detaching the stale context here. Raises ValueError: Token was created in a different context This change gets rid of post_save on OpenTelemetryMiddleware to detach the context on post_execute instead. Since, we are not actually doing anything database save related on the current post_save method, it seems fair to move everything under post_execute as this is where the task execution actually ends. sent via relator
25 августа 2026
Hey there Полина, and welcome to Taskiq.py! How are you?
R
Hey there Влада, and welcome to Taskiq.py! How are you?
26 августа 2026
🚀 New issue to taskiq-python/taskiq by @tavallaie 📝 Add PGMQ support / broker (#662) Is your feature request related to a problem? Existing Postgres brokers for taskiq use custom tables + LISTEN/NOTIFY. PGMQ is a real message queue on Postgres (visibility timeout, delay, archive/delete, etc.) with a Python SDK, and there's no broker for it yet. Describe the solution you'd like A taskiq broker backed by PGMQ, similar to the other broker packages. Happy to help implement it. • PGMQ: https://github.com/pgmq/pgmq • Python SDK: https://github.com/pgmq/pgmq-py Describe alternatives you've considered No response Which component would this affect? Broker #enhancement sent via relator
T
🎉 New Pull Request to taskiq-python/taskiq by @vahidzhe ✨ Feat/scheduler plugins (#663) 📊 +1103/-2 🌿 vahidzhe:feat/scheduler-plugins → master sent via relator
R
Hey there прекратипожалуйста, and welcome to Taskiq.py! How are you?
27 августа 2026
T
🎉 New Pull Request to taskiq-python/taskiq by @spikeninja ✨ fix: taskiq admin spawn_request (#664) 📊 +20/-10 🌿 taskiq-python:fix/taskiq-admin-spawn-request → master sent via relator
28 августа 2026
R
Hey there Вика, and welcome to Taskiq.py! How are you?
T
🎉 New Pull Request to taskiq-python/taskiq by @danfimov ✨ fix: stop using f-strings in logs (#665) 📊 +77/-77 🌿 taskiq-python:fix-do-not-use-f-strings-for-logs → master Using f-strings to format a logging message requires that Python eagerly format the string, even if the logging statement is never executed. For our case it's especially bad - we use f-string in debug log to print an entire message. For long messages during profiling with py-spy I found 5% or unnesesary CPU usage just for __str__ method on messages (200Kb each). Other things: • updated ruff, so now we have more standard rules and fixed couple of issues related to them. • ignored one more rule rule about argument count sent via relator
29 августа 2026
R
Hey there Екатерина, and welcome to Taskiq.py! How are you?
30 августа 2026
R
Hey there DataService.​ Функции Для Вашего Бизнеса! Инфо В "О Себе", and welcome to Taskiq.py! How are you?
🚀 New issue to taskiq-python/taskiq by @juanmicl 📝 Worker misparses positional arguments when a preceding parameter lacks a type annotation (#666) Taskiq version Taskiq version 0.12.6 (master) Python version Python 3.12 OS Linux What happened? parse_params in taskiq/receiver/params_parser.py maps positional arguments to annotations with a counter (argnum) that only increments for annotated parameters. Unannotated parameters are skipped with continue before argnum += 1, but get_type_hints() omits them too, so they still occupy a slot in message.args. When any positional parameter has no annotation, every argument after it is parsed against the wrong annotation. Example: @broker.task async def my_task(request_id, count: int) -> None: ... await my_task.kiq("12345", 3) What the worker receives (verified on master, taskiq 0.12.6): 1. request_id arrives as the int 12345. The unannotated parameter's value is coerced by the next parameter's annotation. 2. count is never validated. kiq("hello", "not-an-int") delivers "not-an-int" to count, and the only log line is a Can't parse argument 0 warning about the other parameter. 3. If the first value fails to parse, the annotated parameter after it never gets coerced either. It keeps its wire representation, so a datetime parameter receives an ISO string. 4. *values: int varargs coerce only the first element. kiq("1", "2", "3") arrives as [1, "2", "3"]. Standalone repro of the worker path, no broker needed: import inspect from typing import get_type_hints from taskiq.formatters.json_formatter import JSONFormatter from taskiq.message import TaskiqMessage from taskiq.receiver.params_parser import parse_params fmt = JSONFormatter() def my_task(request_id, count: int) -> None: ... msg = fmt.loads(fmt.dumps(TaskiqMessage( task_id="1", task_name="mod:my_task", labels={}, labels_types={}, args=["12345", 3], kwargs={}, )).message) parse_params(inspect.signature(my_task), get_type_hints(my_task),
T
🎉 New Pull Request to taskiq-python/taskiq by @juanmicl ✨ fix: align positional argument parsing with parameter positions (#667) 📊 +80/-39 🌿 juanmicl:fix/worker-arg-parse-alignment → master Closes: #666 parse_params mapped positional arguments to annotations using a counter that only advanced for annotated parameters, so any unannotated positional parameter shifted every following argument onto the wrong annotation (values silently coerced by the wrong type, annotated parameters never validated). This PR decouples the positional slot index from annotation presence: • every POSITIONAL_ONLY / POSITIONAL_OR_KEYWORD parameter advances  the slot index, annotated or not; • parsing only happens when the parameter actually has an annotation; • *args annotations now coerce all remaining positional arguments  (previously only the first element was coerced); • keyword-only parameters go straight to the kwargs branch. Behavior for fully-annotated signatures is unchanged, all existing test_params_parser.py cases pass as-is. Validation: full suite passes (pytest -q, 313 tests), black, ruff and mypy clean (mypy reports the same 2 pre-existing errors in taskiq/serializers/ as on master). sent via relator
1 сентября 2026
🚀 New issue to taskiq-python/taskiq by @juanmicl 📝 A schedule with an invalid cron_offset string crashes the whole scheduler (#668) Taskiq version 0.12.6 (master) Python version Python 3.12 OS Linux What happened? is_cron_task_now in taskiq/cli/scheduler/run.py calls ZoneInfo(offset) outside the try block that converts ValueError into CronValueError, and SchedulerLoop._is_schedule_ready_to_send only catches CronValueError. A cron_offset that is not a valid IANA key raises ZoneInfoNotFoundError (a KeyError subclass) that escapes SchedulerLoop.run and kills the scheduler process. One malformed schedule stops all scheduling until the process is restarted. from datetime import datetime, timezone from taskiq.cli.scheduler.run import SchedulerLoop from taskiq.scheduler.scheduled_task import ScheduledTask loop = SchedulerLoop.__new__(SchedulerLoop) loop.cron_tasks_last_run = {} loop.interval_tasks_last_run = {} loop.time_tasks_last_run = {} task = ScheduledTask( task_name="mod:cleanup", labels={}, args=[], kwargs={}, cron="* * * * *", cron_offset="UTC+3", # natural spelling, but not an IANA key ) loop._is_schedule_ready_to_send(task=task, now=datetime.now(tz=timezone.utc)) # -> zoneinfo.ZoneInfoNotFoundError escapes and kills SchedulerLoop.run An invalid offset should get the same treatment as an invalid cron expression: log a warning and skip that schedule, keeping the loop alive. The original timezone-offset request (#201) proposed per-schedule offsets as strings like "+3" and "-1", so this spelling is a natural thing for users to write. This is a different bug from #605 / #625. That change restores timedelta offsets from their serialized ISO-8601 form at model-validation time and does not touch run.py. A plain invalid timezone string still reaches ZoneInfo() at runtime. With the #625 patch applied, cron_offset="UTC+3" still crashes the loop, because parse_cron_offset leaves the string untouched (it is not a valid duration either)
T
🎉 New Pull Request to taskiq-python/taskiq by @juanmicl ✨ fix: skip schedules with invalid cron_offset instead of crashing the scheduler (#669) 📊 +22/-1 🌿 juanmicl:fix/scheduler-invalid-cron-offset-crash → master Closes: #668 is_cron_task_now called ZoneInfo(offset) outside the try/except that converts errors into CronValueError, and the scheduler loop only catches CronValueError. One schedule with a non-IANA cron_offset string (e.g. the natural spelling "UTC+3") raised ZoneInfoNotFoundError out of SchedulerLoop.run and killed the whole scheduler process. With this change a bad offset goes through the same path as an invalid cron expression: CronValueError is raised, the loop logs the existing Cannot parse cron warning and skips that schedule. Two regression tests cover invalid offset strings: the natural spelling "UTC+3" and a typo'd timezone name ("Europa/Madrid"). Both fail on master with ZoneInfoNotFoundError and pass with this change. Complements #625 (which fixes duration-string offsets at model-validation time but leaves the runtime guard unhandled). Validation: full suite passes (pytest -q, 324 tests), black, ruff and mypy clean. sent via relator
Архив по месяцам
Открыть в Telegram Каталог площадок Искать в ChatCrawler

Слепок открытой публичной ленты из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог