胡安民 2021-12-15 13:08 采纳率: 50%
浏览 259
已结题

python-创建mysql线程池进程变量报错 TypeError: cannot pickle '_io.BufferedReader' object

 ###### 问题遇到的现象和发生背景
我想将mysql线程池,放入到多进程中使用

 ###### 问题相关代码,请勿粘贴截图

    # 多进程对象共享
    manager = BaseManager()
    # 一定要在start前注册,不然就注册无效
    manager.register('MySQLhelper', MySQLhelper)
    manager.start()
    sq_lhelper = manager.MySQLhelper("192.168.42.128", int(3306), "root", "root", "ip_pool")  # 错误
    # sq_lhelper= MySQLhelper("192.168.42.128", int(3306), "root", "root", "ip_pool")  # 正确
    combinationIp = combination(sq_lhelper)
    combinationIp.ip_pool_new_turn_ip_pool_rubbish(60)

 ###### 运行结果及报错内容

C:\Users\huanmin\Desktop\python学习\代码\venv\Scripts\python.exe C:/Users/huanmin/Desktop/python学习/代码/爬虫/代理ip验证.py
Traceback (most recent call last):
File "C:\Users\huanmin\Desktop\python学习\代码\爬虫\爬虫数据库操作\combination.py", line 51, in ip_pool_new_turn_ip_pool_rubbish
conn, cursor = self.sq_lhelper.create_conn_cursor()
File "", line 2, in create_conn_cursor
File "C:\Users\huanmin\AppData\Local\Programs\Python\Python310\lib\multiprocessing\managers.py", line 833, in _callmethod
raise convert_to_error(kind, result)
multiprocessing.managers.RemoteError:


Unserializable message: Traceback (most recent call last):
File "C:\Users\huanmin\AppData\Local\Programs\Python\Python310\lib\multiprocessing\managers.py", line 308, in serve_client
send(msg)
File "C:\Users\huanmin\AppData\Local\Programs\Python\Python310\lib\multiprocessing\connection.py", line 211, in send
self._send_bytes(_ForkingPickler.dumps(obj))
File "C:\Users\huanmin\AppData\Local\Programs\Python\Python310\lib\multiprocessing\reduction.py", line 51, in dumps
cls(buf, protocol).dump(obj)
TypeError: cannot pickle '_io.BufferedReader' object


During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\huanmin\Desktop\python学习\代码\爬虫\代理ip验证.py", line 104, in
combinationIp.ip_pool_new_turn_ip_pool_rubbish(60)
File "C:\Users\huanmin\Desktop\python学习\代码\爬虫\爬虫数据库操作\combination.py", line 76, in ip_pool_new_turn_ip_pool_rubbish
conn.rollback()
UnboundLocalError: local variable 'conn' referenced before assignment

Process finished with exit code 1

 ###### 我的解答思路和尝试过的方法
不使用多进程变量就是好的 ,使用多进程变量就不行

 ###### 我想要达到的结果
mysql线程池在多进程共享

  • 写回答

6条回答 默认 最新

    报告相同问题?

    相关推荐 更多相似问题

    问题事件

    • 已结题 12月22日
    • 赞助了问题酬金 12月15日
    • 创建了问题 12月15日

    悬赏问题

    • ¥15 逆向基础题 第一次做 有很多不懂需要请教
    • ¥16 基于Python的数据库系统开发
    • ¥15 某企业对员工采用计件工资管理制度。通过编写程序,要达到以下目的
    • ¥15 关于C# 英文打字练习器程序设计
    • ¥15 wfp应用层设计规则如何能传递到内核层
    • ¥15 关于机器学习创新点几个问题
    • ¥15 python程序编写
    • ¥15 Type-C扩展坞的RTL8153地址硬改
    • ¥15 uniapp websocket 发送 sub 监听后,代码自动发送了 unsub ,解除了监听
    • ¥15 nativefier封装electron的应用遇到alert弹窗后input栏获取不到焦点,confirm不弹出的问题。