pjialin/py12306

maximum recursion depth exceeded while calling a Python object

Opened this issue · 19 comments

启动程序时,报出这个问题后程序停止

启动程序时,报出这个问题后程序停止

意思是递归过度
traceback给一下,没有日志闭眼开车

####### py12306 购票助手,本程序为开源工具,请勿用于商业用途 ########

WEB 管理页面已开启,请访问 主机地址 + 端口 8008 进行查看

**** 当前配置 ****
多线程查询: 未开启
CDN 状态: 未开启
通知状态:		钉钉通知: 已开启		
查询间隔: 1 秒
用户心跳检测间隔: 120 秒
WEB 管理页面: 已开启

Traceback (most recent call last):
  File "/Users/ronacaodo/Docker/py12306/main.py", line 64, in <module>
    main()
  File "/Users/ronacaodo/Docker/py12306/main.py", line 20, in main
    Query.check_before_run()
  File "/Users/ronacaodo/Docker/py12306/py12306/query/query.py", line 61, in check_before_run
    self = cls()
  File "/Users/ronacaodo/Docker/py12306/py12306/helpers/func.py", line 30, in singleton_new
    it.__init_original__(*args, **kw)
  File "/Users/ronacaodo/Docker/py12306/py12306/query/query.py", line 33, in __init__
    self.request_device_id()
  File "/Users/ronacaodo/Docker/py12306/py12306/query/query.py", line 153, in request_device_id
    return self.request_device_id()
  File "/Users/ronacaodo/Docker/py12306/py12306/query/query.py", line 153, in request_device_id
    return self.request_device_id()
  File "/Users/ronacaodo/Docker/py12306/py12306/query/query.py", line 153, in request_device_id
    return self.request_device_id()
  [Previous line repeated 972 more times]
  File "/Users/ronacaodo/Docker/py12306/py12306/query/query.py", line 132, in request_device_id
    response = self.session.get(API_GET_BROWSER_DEVICE_ID)
  File "/opt/anaconda3/lib/python3.9/site-packages/requests/sessions.py", line 546, in get
    return self.request('GET', url, **kwargs)
  File "/Users/ronacaodo/Docker/py12306/py12306/helpers/request.py", line 60, in request
    response = super().request(*args, **kwargs)
  File "/opt/anaconda3/lib/python3.9/site-packages/requests_html.py", line 672, in request
    r = super(HTMLSession, self).request(*args, **kwargs)
  File "/opt/anaconda3/lib/python3.9/site-packages/requests/sessions.py", line 533, in request
    resp = self.send(prep, **send_kwargs)
  File "/opt/anaconda3/lib/python3.9/site-packages/requests/sessions.py", line 646, in send
    r = adapter.send(request, **kwargs)
  File "/opt/anaconda3/lib/python3.9/site-packages/requests/adapters.py", line 439, in send
    resp = conn.urlopen(
  File "/opt/anaconda3/lib/python3.9/site-packages/urllib3/connectionpool.py", line 597, in urlopen
    httplib_response = self._make_request(conn, method, url,
  File "/opt/anaconda3/lib/python3.9/site-packages/urllib3/connectionpool.py", line 343, in _make_request
    self._validate_conn(conn)
  File "/opt/anaconda3/lib/python3.9/site-packages/urllib3/connectionpool.py", line 839, in _validate_conn
    conn.connect()
  File "/opt/anaconda3/lib/python3.9/site-packages/urllib3/connection.py", line 330, in connect
    self.ssl_context = create_urllib3_context(
  File "/opt/anaconda3/lib/python3.9/site-packages/urllib3/util/ssl_.py", line 266, in create_urllib3_context
    context.set_ciphers(ciphers or DEFAULT_CIPHERS)
  File "/opt/anaconda3/lib/python3.9/site-packages/urllib3/contrib/pyopenssl.py", line 424, in set_ciphers
    self._ctx.set_cipher_list(ciphers)
  File "/opt/anaconda3/lib/python3.9/site-packages/OpenSSL/SSL.py", line 1219, in set_cipher_list
    tmpconn = Connection(self, None)
  File "/opt/anaconda3/lib/python3.9/site-packages/OpenSSL/SSL.py", line 1631, in __init__
    self._reverse_mapping[self._ssl] = self
  File "/opt/anaconda3/lib/python3.9/weakref.py", line 168, in __setitem__
    self.data[key] = KeyedRef(value, self._remove, key)
  File "/opt/anaconda3/lib/python3.9/weakref.py", line 349, in __new__
    self = ref.__new__(type, ob, callback)
RecursionError: maximum recursion depth exceeded while calling a Python object

一样的问题,解决了喊我一下

获取deviceId 后端接口失效,需要用cookie 中的deviceId或者修改接口。

获取到cookie中deviceId后 往哪塞?

'https://12306-rail-id-v2.pjialin.com/' 这个接口调不通了。这个接口是啥逻辑呀,能自己实现下不

'https://12306-rail-id-v2.pjialin.com/' 这个接口调不通了。这个接口是啥逻辑呀,能自己实现下不

你都看到这里来了,应该知道代码这种接口有两个,注释这个,使用另一个即可。

@IronXiao 哥,这个代码怎么看,在哪里注释?

打开api.py, 打开53行,注释54行

全局搜
改成这个

API_GET_BROWSER_DEVICE_ID = BASE_URL_OF_12306 + '/otn/HttpZF/logdevice'
# API_GET_BROWSER_DEVICE_ID = 'https://12306-rail-id-v2.pjialin.com/'
plkgq commented

全局搜 改成这个

API_GET_BROWSER_DEVICE_ID = BASE_URL_OF_12306 + '/otn/HttpZF/logdevice'
# API_GET_BROWSER_DEVICE_ID = 'https://12306-rail-id-v2.pjialin.com/'

老哥 改完以后报这个错误
AssertionError: View function mapping is overwriting an existing endpoint function: user.wrapper

打开 api.py, 打开53行,注释54行

你好,这样操作之后就会在控制台打印:

发现 1 个任务

================== 任务 1 ==================
出发站:北京 到达站:深圳
乘车日期:['2020-01-25', '2020-01-26']
坐席:硬卧,硬座
乘车人:张三
筛选车次:K356,K1172,K4184
任务名称:北京 -> 深圳

发现 1 个用户

正在登录用户 your user name

|=== 查询记录恢复成功 上次查询 2024-01-09 16:37:00.735113 ===|

  • Serving Flask app "py12306.web.web" (lazy loading)
  • Environment: production
    WARNING: Do not use the development server in a production environment.
    Use a production WSGI server instead.
  • Debug mode: off
    正在下载二维码...
    RuntimeError: 乘车日期错误,比当前时间还早!!

之后就会结束程序的运行,这样的问题怎么解决呢

打开 api.py, 打开53行,注释54行

你好,这样操作之后就会在控制台打印:

发现 1 个任务

================== 任务 1 ================== 出发站:北京 到达站:深圳 乘车日期:['2020-01-25', '2020-01-26'] 坐席:硬卧,硬座 乘车人:张三 筛选车次:K356,K1172,K4184 任务名称:北京 -> 深圳

发现 1 个用户

正在登录用户 your user name

|=== 查询记录恢复成功 上次查询 2024-01-09 16:37:00.735113 ===|

  • Serving Flask app "py12306.web.web" (lazy loading)
  • Environment: production
    WARNING: Do not use the development server in a production environment.
    Use a production WSGI server instead.
  • Debug mode: off
    正在下载二维码...
    RuntimeError: 乘车日期错误,比当前时间还早!!

之后就会结束程序的运行,这样的问题怎么解决呢

把QUERY_JOBS里乘车时间改为比你当前时间大就行

全局搜 改成这个

API_GET_BROWSER_DEVICE_ID = BASE_URL_OF_12306 + '/otn/HttpZF/logdevice'
# API_GET_BROWSER_DEVICE_ID = 'https://12306-rail-id-v2.pjialin.com/'

老哥 改完以后报这个错误 AssertionError: View function mapping is overwriting an existing endpoint function: user.wrapper

我也是这样,怎么破啊老哥们

全局搜 改成这个

API_GET_BROWSER_DEVICE_ID = BASE_URL_OF_12306 + '/otn/HttpZF/logdevice'
# API_GET_BROWSER_DEVICE_ID = 'https://12306-rail-id-v2.pjialin.com/'

老哥 改完以后报这个错误 AssertionError: View function mapping is overwriting an existing endpoint function: user.wrapper

我也是这样,怎么破啊老哥们

我的Flask 和Flask-JWT-Extended版本太新就会有这个报错

全局搜 改成这个

API_GET_BROWSER_DEVICE_ID = BASE_URL_OF_12306 + '/otn/HttpZF/logdevice'
# API_GET_BROWSER_DEVICE_ID = 'https://12306-rail-id-v2.pjialin.com/'

老哥 改完以后报这个错误 AssertionError: View function mapping is overwriting an existing endpoint function: user.wrapper

我也是这样,怎么破啊老哥们

我的Flask 和Flask-JWT-Extended版本太新就会有这个报错

那请问一下版本多少会没事?

全局搜 改成这个

API_GET_BROWSER_DEVICE_ID = BASE_URL_OF_12306 + '/otn/HttpZF/logdevice'
# API_GET_BROWSER_DEVICE_ID = 'https://12306-rail-id-v2.pjialin.com/'

老哥 改完以后报这个错误 AssertionError: View function mapping is overwriting an existing endpoint function: user.wrapper

我也是这样,怎么破啊老哥们

我的Flask 和Flask-JWT-Extended版本太新就会有这个报错

那请问一下版本多少会没事?

就requirements.txt里面写的Flask 和Flask-JWT-Extended版本就没问题. (当然如果你python版本太新的话,可能会遇到需要把collection 改成collection.abc的问题, 可以上stack overflow看一下)

全局搜 改成这个

API_GET_BROWSER_DEVICE_ID = BASE_URL_OF_12306 + '/otn/HttpZF/logdevice'
# API_GET_BROWSER_DEVICE_ID = 'https://12306-rail-id-v2.pjialin.com/'

老哥 改完以后报这个错误 AssertionError: View function mapping is overwriting an existing endpoint function: user.wrapper

我也是这样,怎么破啊老哥们

我的Flask 和Flask-JWT-Extended版本太新就会有这个报错

那请问一下版本多少会没事?

就requirements.txt里面写的Flask 和Flask-JWT-Extended版本就没问题. (当然如果你python版本太新的话,可能会遇到需要把collection 改成collection.abc的问题, 可以上stack overflow看一下)

牛的,确实是版本降低就没事了,谢谢兄弟

全局搜 改成这个

API_GET_BROWSER_DEVICE_ID = BASE_URL_OF_12306 + '/otn/HttpZF/logdevice'
# API_GET_BROWSER_DEVICE_ID = 'https://12306-rail-id-v2.pjialin.com/'

老哥 改完以后报这个错误 AssertionError: View function mapping is overwriting an existing endpoint function: user.wrapper

我也是这样,怎么破啊老哥们

我的Flask 和Flask-JWT-Extended版本太新就会有这个报错

那请问一下版本多少会没事?

就requirements.txt里面写的Flask 和Flask-JWT-Extended版本就没问题. (当然如果你python版本太新的话,可能会遇到需要把collection 改成collection.abc的问题, 可以上stack overflow看一下)

大哥,可以问一下我一直在查询也没下单是怎么回事吗,也没报错= =

全局搜 改成这个

API_GET_BROWSER_DEVICE_ID = BASE_URL_OF_12306 + '/otn/HttpZF/logdevice'
# API_GET_BROWSER_DEVICE_ID = 'https://12306-rail-id-v2.pjialin.com/'

老哥 改完以后报这个错误 AssertionError: View function mapping is overwriting an existing endpoint function: user.wrapper

我也是这样,怎么破啊老哥们

我的Flask 和Flask-JWT-Extended版本太新就会有这个报错

那请问一下版本多少会没事?

就requirements.txt里面写的Flask 和Flask-JWT-Extended版本就没问题. (当然如果你python版本太新的话,可能会遇到需要把collection 改成collection.abc的问题, 可以上stack overflow看一下)

大哥,可以问一下我一直在查询也没下单是怎么回事吗,也没报错= =

我还没开始实际操作, 就今天下午刚刚给部署上; 所以我也不是很清楚; 如果后面我碰到相应的问题解决了,再告诉你

全局搜 改成这个

API_GET_BROWSER_DEVICE_ID = BASE_URL_OF_12306 + '/otn/HttpZF/logdevice'
# API_GET_BROWSER_DEVICE_ID = 'https://12306-rail-id-v2.pjialin.com/'

老哥 改完以后报这个错误 AssertionError: View function mapping is overwriting an existing endpoint function: user.wrapper

我也是这样,怎么破啊老哥们

我的Flask 和Flask-JWT-Extended版本太新就会有这个报错

那请问一下版本多少会没事?

就requirements.txt里面写的Flask 和Flask-JWT-Extended版本就没问题. (当然如果你python版本太新的话,可能会遇到需要把collection 改成collection.abc的问题, 可以上stack overflow看一下)

大哥,可以问一下我一直在查询也没下单是怎么回事吗,也没报错= =

我还没开始实际操作, 就今天下午刚刚给部署上; 所以我也不是很清楚; 如果后面我碰到相应的问题解决了,再告诉你

解决了,原来stations.txt里面的站点信息不是乱填的= =因为我填的站点是最近新开的,所以要自己添加