使用MRQ實現多機併發執行任務

2021-10-22 00:06:38 字數 2556 閱讀 7035

mrq:

python 2.7+

mongodb >= 2.4

redis >= 2.6

mrq依賴redis和mongodb,需要分別安裝mongodb,redis

安裝mrq直接使用:pip install mrq

參考:/blob/master/docs/configuration.md

mrq-config.py:

#!/usr/bin/env python

# coding=utf-8

"""mongodb 配置"""

mongodb_jobs =

"mongodb:"

"""redis配置"""

redis =

"redis:"

"""mrq-worker配置"""

#定時任務配置 /blob/master/docs/jobs-maintenance.md

scheduler =

true

#run the scheduler.defaults to false.

scheduler_tasks =

[dict

(path=

"test.py"

, params=

dict()

, interval=

300,

queue=

"test1"),

# 增加其他的定時任務

]

task.run(self, params) :

每個任務都必須繼承mrq.task.task類,該類提供task.run(self, params) 介面,所有任務的主要執行入口。

在mrq中使用該介面建立任務並放入執行佇列的方法:queue_job(main_task_path, params, queue=none)

如果未提供佇列,則將使用配置中定義的該任務的預設佇列。如果沒有,則使用佇列預設值,返回作業的id。

from mrq import context, job, task

from subprocess import popen, pipe, devnull

class

testqueue

(task.task)

:"""任務入佇列"""

defrun

(self, params)

: field =

'' job.queue_job(

"test_run"

, field, queue=

"test1"

)class

testrun

(task.task)

:"""任務執行"""

defrun

(self, params)

: cmd =

'cat test.txt'

#執行某個shell 任務

shell = popen(cmd, stdout=pipe, stderr=devnull)

php實現多session併發執行

php實現多session併發執行 瀏覽統計 year 2537 quarter 344 month 53 week 21 today 6 首先介紹一下session的概念 所謂session是微軟首先提出的,在asp中最先整合。由於session的採用,大大方便了web開發員的工作。一時間asp風...

SpringBoot併發執行定時任務

剛剛看了下spring boot實現定時任務的文章,感覺還不錯。spring boot 使用spring自帶的schedule來實現定時任務變得非常簡單和方便。在這裡個大家分享下。enablescheduling 開啟定時任務 public static void main string args ...

使用subprocess模組非同步併發執行遠端命令

運維自動化平台不可避免地會涉及到遠端命令執行操作,主要分為兩類主要做法 目標機器安裝agent,或者使用ssh。saltstack是乙個典型的agent模式的遠端控制工具,麻煩的地方是首先要在目標機器上安裝saltstack的agent。使用ssh的模組居多,fabric和ansible是此類工具中...