【问题标题】:Python script stuck at importPython脚本停留在导入
【发布时间】:2019-03-30 09:47:33
【问题描述】:

我有几个每分钟使用 crontab 运行的 python 脚本。 使用 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>

附加信息:

  • 操作系统: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

非常感谢任何帮助

【问题讨论】:

  • 这里也一样。 Python 3.7.3,debian 9。也只是有时。还有 virtualenv,但没有安装这样的库。
  • 很奇怪...在安装 python-binance 之前我没有任何问题。你会卡在同一点吗?你试过 python3 -vv 了吗?
  • 是的。安装了很多模块,但我一次安装了它们,所以我无法快速找出导致问题的原因。
  • 我刚刚在这里打开了这个问题——bugs.python.org/msg340722
  • 嗨,Serge,感谢您告诉我!希望我们能就如何进一步排除故障得到一些好的建议!

标签: python-3.x performance python-import


【解决方案1】:

所以经过长时间的故障排除,在一些朋友的支持下,我发现问题与车轮有关。

我已经在 venv 中安装了模块,使用:

pip3 install binance --no-binary :all:

--no-binary :all: 使 pip 从源代码编译依赖项,而不是使用任何可能可用的预编译轮子。

希望有人会发现此解决方案有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    • 1970-01-01
    • 2015-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多