微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 celery beat 从 RabbitMQ 队列中安排任务?

如何解决如何使用 celery beat 从 RabbitMQ 队列中安排任务?

我正在向“RequestReceiverQueue”RMQ 发布一条消息,我需要将其安排为任务。所以这里发布的消息是可变的,因此如何使用芹菜节拍或替代(如果有)将其设置为计划任务?

应用程序

scheduler_app = Celery(
    "schedulerApp",backend="rpc://",broker="pyamqp://guest:guest@localhost:5672/poc_vhost",include=["workers.tasks"]
)

request_receiver_exchange = Exchange("request_receiver_exchange",type="topic")

scheduler_app.conf.task_queues = (
    Queue(
        'RequestReceiverQueue',exchange=request_receiver_exchange,durable=True,routing_key="workers.tasks.*"
    ),)

workers.tasks.py

from workers.app import scheduler_app

@scheduler_app.task
def execute_request_1(msg):
    print("You are in execute_request_1: ")
    print("processing message: ",msg)


@scheduler_app.task
def execute_request_2(request):
    print("You are in execute_request_2")
    print("Received request is: ",request)

celery beat 配置:这里我需要调度来自“RequestReceiverQueue”队列的传入消息,而不是调度程序配置中定义的 kwargs

scheduler_app.conf.beat_schedule = {
    "task-scheduler-1": {
        "task": "workers.tasks.execute_request_1","schedule": 60.0,"kwargs": {"Msg": "Between 1945 and 1947,Turing lived in Hampton,London."}
    },"task-scheduler-2": {
        "task": "workers.tasks.execute_request_2","kwargs": {"Msg": "Turing worked at the National Physical Laboratory."}
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。