问题描述
我正在向“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 (将#修改为@)