请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

异步写入mysql的时候,在保存成功时候我想回调一下成功的addCallback,发现部署到linux后不生效

图片描述

一开始 , 发现在windows开发环境 ,直接运行程序 不会走进 成功回调 函数 ,
当在爬虫的 def close 方法里 休了几秒后 ,可以进入 成功回调函数,
但是 当我 部署到 linux 的 scrapyd 环境后 发现 成功回调函数 不会进去 , 即使 加大了休眠时长 .

现在业务 需求 , 在插入这条数据后, 要发送 requests.post()请求 调用一下 另一个接口 作为触发条件 .

正在回答 回答被采纳积分+3

2回答

bobby 2020-08-05 11:03:26

https://img1.sycdn.imooc.com//szimg/5f2a217609efe19810610327.jpg 你可以把逻辑写在这里啊

0 回复 有任何疑惑可以回复我~
  • 提问者 慕少1457817 #1
    写在这里, 我觉得 入库 可能还没走完,  我下面 的处理 逻辑 就已经 执行完成了,  就不是在数据保存完成 再去 执行 我的处理 逻辑了
    回复 有任何疑惑可以回复我~ 2020-08-06 20:38:04
  • bobby 回复 提问者 慕少1457817 #2
    你这里已经执行了sql语句了 为什么还说可能入库还没有走完呢
    回复 有任何疑惑可以回复我~ 2020-08-08 10:05:06
  • 提问者 慕少1457817 回复 bobby #3
    打断点,debug调试的时候, 走到下面的处理逻辑了, 但是sql 还没有插入数据库
    回复 有任何疑惑可以回复我~ 2020-08-10 14:54:06
bobby 2020-08-03 10:15:15

这里callback是异步调用函数 不是成功回调函数, 这里有错误回调函数 是hanle_error 如果这两个都不进入 那么你就需要看看scrapy的日志,因为如果mysql连接失败 也是异步的,如果连接失败了这两个函数都不会进入,你看看scrapy的日志能看出来  你这里如果想在插入成功以后发起下一个请求 https://stackoverflow.com/questions/38467052/scrapy-make-http-request-in-pipeline 可以参考这个


0 回复 有任何疑惑可以回复我~
  • 提问者 慕少1457817 #1
    我就是想在保存成功后 ,做一些业务逻辑(发送请求告诉别人我这入库成功), 我现在在 addCallback 后面 加了time.sleep(1) ,休1 秒后每次 都成功调用这个 回调函数了,  .  入库失败它会调用addErrback , 那成功的时候呢 , 不是 addCallback 吗
    回复 有任何疑惑可以回复我~ 2020-08-03 16:13:28
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信