2023年11月17日金曜日

rqscheduler でエンキューする際にキーワード引数を指定するサンプル

rqscheduler でエンキューする際にキーワード引数を指定するサンプル

概要

kwargs を使ってワーカー側は受け取ることができるので特定の enqueue_in を判定するときなどに使えそうです

環境

  • Python 3.11.3
  • rq-scheduler 0.13.1

サンプルコード

from datetime import timedelta

from redis import Redis
from rq import Queue
from rq_scheduler import Scheduler

from my_lib.util import Message

queue = Queue("default", connection=Redis())
scheduler = Scheduler(queue=queue, connection=queue.connection)


scheduler.enqueue_in(timedelta(seconds=5), Message().say, msg="hello")
  • vim my_lib/util.py
class Message:
    def say(self, **kwargs):
        print(kwargs)

最後に

AttributeError: Can't get attribute 'Message' on <module '__main__' from '/home/user01/.local/share/virtualenvs/python-T6UYzsfV/bin/rqscheduler'>

という感じのエラーになる場合は enqueue_in する際のメソッドを素直にモジュール化しましょう
今回であれば my_lib/__init__.py の設置も忘れずに行いましょう

0 件のコメント:

コメントを投稿