Closed zacat closed 2 years ago
能更具体点吗?比如什么阻塞策略、定时周期、任务大概执行多久。
可以把日志改为debug模式,每一次接受任务、执行完毕等都会打日志,可以把未执行的task的日志发给我看看
import logging
logger = logging.getLogger("pyxxl")
handler = logging.StreamHandler()
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
好,我测试一下。
@app.handler.register(name="dyVideoJobHandler") async def dy_video_job_handler(): quart = json.loads(g.xxl_run_data.executorParams)
定义是这样写,同时先向启动任务,如果上一个任务没有结束,没有接收到任务日志,进行启动。
一个executor只能同时执行一个相同的jobId的任务(不同的jobId可以同时执行)
上一个没结束的话,会根据阻塞策略进行配置;可以查看xxl-admin的文档,目前py的都是支持这个规则的
- 阻塞处理策略:调度过于密集执行器来不及处理时的处理策略;
单机串行(默认):调度请求进入单机执行器后,调度请求进入FIFO队列并以串行方式运行;
丢弃后续调度:调度请求进入单机执行器后,发现执行器存在运行的调度任务,本次请求将会被丢弃并标记为失败;
覆盖之前调度:调度请求进入单机执行器后,发现执行器存在运行的调度任务,将会终止运行中的调度任务并清空队列,然后运行本地调度任务;
就是不同的jobId
你方法里面是异步的吗,如果方法里面是同步阻塞的,那么定义的时候不能用async定义
@app.handler.register(name="dyVideoJobHandler")
def dy_video_job_handler():
quart = json.loads(g.xxl_run_data.executorParams)
果然是这样的问题,谢谢了。
运行任务有时候JOB不会执行任何操作。