请稍等 ...
×

采纳答案成功!

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

异步写入 MySQL 失败

设置断点可以进入 process_item,但是不晓得为什么不能进入 do_insert。Spider closed (finished) 之后整个程序一直卡着。

class MySQLTwistedPipleline(object):
    def __init__(self, dbpool):
        self.dbpool = dbpool
    @classmethod
    def from_settings(cls, settings):
        dbparms = dict(
            host=settings["MYSQL_HOST"],
            db=settings["MYSQL_DBNAME"],
            user=settings["MYSQL_USER"],
            passwd=settings["MYSQL_PASSWORD"],
            charset="utf8",
            cursorclass=DictCursor,
            use_unicode=True,
        )
        dbpool = adbapi.ConnectionPool("MySQLdb", **dbparms)
        return cls(dbpool)
    def process_item(self, item, spider):
        query = self.dbpool.runInteraction(self.do_insert, item)
        query.addErrback(self.handle_error, item, spider)
        return item
    def handle_error(self, failure, item, spider):
        print(failure)
    def do_insert(self, cursor, item):
        insert_sql = """
        insert into article 
        (title, url, url_object_id, front_image_url, front_image_path, tags, content, parise_nums, comment_nums, fav_nums, create_time) 
        VALUES 
        (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
        """
        params = []
        params.append(item.get("title", ""))
        params.append(item.get("url", ""))
        params.append(item.get("url_object_id", ""))
        front_image_url_str = ",".join(item.get("front_image_url", []))
        params.append(front_image_url_str)
        params.append(item.get("front_image_path", ""))
        params.append(item.get("tags", ""))
        params.append(item.get("content", ""))
        params.append(item.get("parise_nums", 0))
        params.append(item.get("comment_nums", 0))
        params.append(item.get("fav_nums", 0))
        params.append(item.get("create_time", "1970-07-01"))
        cursor.execute(insert_sql, tuple(params))

不进入断点,程序也不自动停止。

图片描述

正在回答

2回答

bobby 2020-04-21 17:04:27

https://img1.sycdn.imooc.com/szimg/5e9eb703091a5cf608140610.jpg 这里打断点 然后debug看看是否进入这里 以及具体的错误信息是什么

0 回复 有任何疑惑可以回复我~
  • 提问者 o学者o #1
    也没有进入 handle_error 的
    回复 有任何疑惑可以回复我~ 2020-04-21 19:22:15
  • 提问者 o学者o #2
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-04-21 21:01:46
提问者 o学者o 2020-04-21 21:01:38

已经解决了,MySQL 的配置有问题,但是连接的时候又不报错。

0 回复 有任何疑惑可以回复我~
  • bobby #1
    好的,
    回复 有任何疑惑可以回复我~ 2020-04-22 15:21:12
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号