Python 脚本在导入时卡住
Python script stuck at import
我有几个 python 脚本,每分钟 运行 使用 crontab。
使用 pip3 安装 python-binance 后,只有有时(对我来说似乎是随机的)我所有使用加密库的脚本都在导入时卡住。
正如您从下面的日志中看到的那样,原本应该 运行 每分钟持续不到一秒钟的事情,有时却花了十多分钟。
2019-03-30 08:51:07 INFO (done)
2019-03-30 08:52:07 INFO (done)
2019-03-30 08:53:07 INFO (done)
2019-03-30 09:04:45 INFO (done)
2019-03-30 09:05:45 INFO (done)
2019-03-30 09:06:45 INFO (done)
尝试调试问题,我 运行 使用 python -vv.
循环中的脚本
在缓慢的迭代过程中,python解释器卡在这里几分钟
# trying /home/user/.local/lib/python3.6/site-packages/cryptography/hazmat/primitives/kdf/scrypt.cpython-36m-x86_64-linux-gnu.so
# trying /home/user/.local/lib/python3.6/site-packages/cryptography/hazmat/primitives/kdf/scrypt.abi3.so
# trying /home/user/.local/lib/python3.6/site-packages/cryptography/hazmat/primitives/kdf/scrypt.so
# trying /home/user/.local/lib/python3.6/site-packages/cryptography/hazmat/primitives/kdf/scrypt.py
# /home/user/.local/lib/python3.6/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/scrypt.cpython-36.pyc matches /home/user/.local/lib/python3.6/site-packages/cryptography/hazmat/primitives/kdf/scrypt.py
# code object from '/home/user/.local/lib/python3.6/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/scrypt.cpython-36.pyc'
import 'cryptography.hazmat.primitives.kdf.scrypt' # <_frozen_importlib_external.SourceFileLoader object at 0x7f5aff05d6a0>
附加信息:
- OS: Ubuntu 18.04
- Python版本:python3 3.6.7-1~18.04
Python-binance 版本:python-binance==0.7.1
这不是资源问题,当解释器卡住时 CPU 使用率不到 20%,有足够的 RAM,没有磁盘瓶颈
- 问题出现在具有相同配置的不同服务器上
- 我已经尝试 运行 使用 venv 的脚本得到相同的结果
更新:
在 python discord 频道上提出建议后,我又尝试了一件事情,不幸的是没有帮助
- 将 ulimit -n 从 1024 增加到 4096
非常感谢任何帮助
所以经过长时间的排查,在一些朋友的支持下,我发现问题与轮子有关。
我已经使用以下方法在 venv 中安装了模块:
pip3 install binance --no-binary :all:
--no-binary :all: 使 pip 从源代码编译依赖项,而不是使用任何可能可用的预编译轮。
希望有人会发现此解决方案有帮助。
我有几个 python 脚本,每分钟 运行 使用 crontab。 使用 pip3 安装 python-binance 后,只有有时(对我来说似乎是随机的)我所有使用加密库的脚本都在导入时卡住。
正如您从下面的日志中看到的那样,原本应该 运行 每分钟持续不到一秒钟的事情,有时却花了十多分钟。
2019-03-30 08:51:07 INFO (done)
2019-03-30 08:52:07 INFO (done)
2019-03-30 08:53:07 INFO (done)
2019-03-30 09:04:45 INFO (done)
2019-03-30 09:05:45 INFO (done)
2019-03-30 09:06:45 INFO (done)
尝试调试问题,我 运行 使用 python -vv.
循环中的脚本在缓慢的迭代过程中,python解释器卡在这里几分钟
# trying /home/user/.local/lib/python3.6/site-packages/cryptography/hazmat/primitives/kdf/scrypt.cpython-36m-x86_64-linux-gnu.so
# trying /home/user/.local/lib/python3.6/site-packages/cryptography/hazmat/primitives/kdf/scrypt.abi3.so
# trying /home/user/.local/lib/python3.6/site-packages/cryptography/hazmat/primitives/kdf/scrypt.so
# trying /home/user/.local/lib/python3.6/site-packages/cryptography/hazmat/primitives/kdf/scrypt.py
# /home/user/.local/lib/python3.6/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/scrypt.cpython-36.pyc matches /home/user/.local/lib/python3.6/site-packages/cryptography/hazmat/primitives/kdf/scrypt.py
# code object from '/home/user/.local/lib/python3.6/site-packages/cryptography/hazmat/primitives/kdf/__pycache__/scrypt.cpython-36.pyc'
import 'cryptography.hazmat.primitives.kdf.scrypt' # <_frozen_importlib_external.SourceFileLoader object at 0x7f5aff05d6a0>
附加信息:
- OS: Ubuntu 18.04
- Python版本:python3 3.6.7-1~18.04
Python-binance 版本:python-binance==0.7.1
这不是资源问题,当解释器卡住时 CPU 使用率不到 20%,有足够的 RAM,没有磁盘瓶颈
- 问题出现在具有相同配置的不同服务器上
- 我已经尝试 运行 使用 venv 的脚本得到相同的结果
更新: 在 python discord 频道上提出建议后,我又尝试了一件事情,不幸的是没有帮助
- 将 ulimit -n 从 1024 增加到 4096
非常感谢任何帮助
所以经过长时间的排查,在一些朋友的支持下,我发现问题与轮子有关。
我已经使用以下方法在 venv 中安装了模块:
pip3 install binance --no-binary :all:
--no-binary :all: 使 pip 从源代码编译依赖项,而不是使用任何可能可用的预编译轮。
希望有人会发现此解决方案有帮助。