fcfangcc / pyxxl

XXL-JOB的Python执行器实现,可以方便的将Python方法注册到XXL-JOB的调度中心上进行管理
https://fcfangcc.github.io/pyxxl/
GNU General Public License v3.0
60 stars 16 forks source link

并发情况,任务参数重复/漏任务 #24

Closed minguncle closed 1 year ago

minguncle commented 1 year ago

xxl admin同时进行三次调度,即任务执行在同一秒,xxl日志显示1毫秒完成三次任务发送,三次任务参数不同; python执行器获取到的三次参数,有一次重复,即同一参数的任务获取了两次,另一任务参数未获取到; 还不清楚什么原因;

fcfangcc commented 1 year ago

理论上不会出现你说的这种情况。能说下复现的流程吗

xxl admin同时进行三次调度,即任务执行在同一秒,xxl日志显示1毫秒完成三次任务发送,三次任务参数不同; python执行器获取到的三次参数,有一次重复,即同一参数的任务获取了两次,另一任务参数未获取到; 还不清楚什么原因;

minguncle commented 1 year ago

1.xxl-admin添加三次以上的任务,执行时间时分秒相同,任务参数不同 2.xxl-admin到点触发调度,任务日志显示执行成功,加了任务参数打印,任务参数均不同 3.pyxxl,同步方法,接收任务,打印任务参数,任务参数显示有重复

python相关代码如下: def main(self, ts): """ 入口函数 """ self.logInfo("接收到任务:{}".format(ts))

@app.handler.register(name="spider_xhs_kw") def get_task(): ts = json.loads(g.xxl_run_data.executorParams) TalentLabelTask().main(ts)

app.run_executor()

minguncle commented 1 year ago

没有定位到问题,暂时是xxl加了调度时间偏移去解决了,以后再研究研究

fcfangcc commented 1 year ago

我只发现了一个用同步方法写的task,某种情况下会卡死的情况。但是你说的参数都错误的情况不应该出现。可以用最新版本 0.3.0a2 再试下,我修复了几个小问题,可能解决了你说的bug。