Не уверен, что это проблема Python или проблема Raspberry Pi.
У меня есть сценарий Python, который выполняется на безголовом Raspberry Pi. Он вызывается заданием crontab каждые 5 минут. Это прекрасно работает в течение нескольких дней или недель подряд, тогда случайным образом сценарий завершится неудачей - даже если s sh 'въехал в Pi и запустил сценарий вручную. Самый последний сбой дал эту трассировку стека при ручном запуске:
Traceback (most recent call last):
File "newscan.py", line 1, in <module>
import time, json, datetime, requests, sys, thread, signal
File "/usr/lib/python2.7/dist-packages/requests/__init__.py", line 52, in <module>
from .packages.urllib3.contrib import pyopenssl
File "/usr/lib/python2.7/dist-packages/requests/packages/__init__.py", line 59, in <module>
vendored('urllib3.contrib.pyopenssl')
File "/usr/lib/python2.7/dist-packages/requests/packages/__init__.py", line 32, in vendored
__import__(vendored_name, globals(), locals(), level=0)
File "/usr/lib/python2.7/dist-packages/urllib3/contrib/pyopenssl.py", line 47, in <module>
import OpenSSL.SSL
File "/usr/lib/python2.7/dist-packages/OpenSSL/__init__.py", line 8, in <module>
from OpenSSL import rand, crypto, SSL
File "/usr/lib/python2.7/dist-packages/OpenSSL/rand.py", line 12, in <module>
from OpenSSL._util import (
File "/usr/lib/python2.7/dist-packages/OpenSSL/_util.py", line 6, in <module>
from cryptography.hazmat.bindings.openssl.binding import Binding
File "/usr/lib/python2.7/dist-packages/cryptography/hazmat/bindings/openssl/binding.py", line 14, in <module>
from cryptography.hazmat.bindings._openssl import ffi, lib
ValueError: module functions cannot set METH_CLASS or METH_STATIC
Перезагрузка Pi сделала это go прочь - сразу после перезагрузки скрипт может быть успешно запущен.
Одна вещь, которая приходит на ум, это то, что, возможно, скрипт все еще работает, но застрял как-то, и повторный запуск вызывает сбой, но ps, похоже, не показывал это - это был список ps, когда Проявленная проблема:
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
4 0 1 0 20 0 27088 6096 - Ss ? 0:15 /sbin/init splash
1 0 2 0 20 0 0 0 - S ? 0:00 [kthreadd]
1 0 3 2 20 0 0 0 - S ? 0:03 [ksoftirqd/0]
1 0 5 2 0 -20 0 0 - S< ? 0:00 [kworker/0:0H]
1 0 7 2 20 0 0 0 - S ? 1:28 [rcu_sched]
1 0 8 2 20 0 0 0 - S ? 0:00 [rcu_bh]
1 0 9 2 -100 - 0 0 - S ? 0:00 [migration/0]
1 0 10 2 0 -20 0 0 - S< ? 0:00 [lru-add-drain]
1 0 11 2 20 0 0 0 - S ? 0:00 [cpuhp/0]
1 0 12 2 20 0 0 0 - S ? 0:00 [cpuhp/1]
1 0 13 2 -100 - 0 0 - S ? 0:00 [migration/1]
1 0 14 2 20 0 0 0 - S ? 0:01 [ksoftirqd/1]
1 0 16 2 0 -20 0 0 - S< ? 0:00 [kworker/1:0H]
1 0 17 2 20 0 0 0 - S ? 0:00 [cpuhp/2]
1 0 18 2 -100 - 0 0 - S ? 0:00 [migration/2]
1 0 19 2 20 0 0 0 - S ? 0:14 [ksoftirqd/2]
1 0 21 2 0 -20 0 0 - S< ? 0:00 [kworker/2:0H]
1 0 22 2 20 0 0 0 - S ? 0:00 [cpuhp/3]
1 0 23 2 -100 - 0 0 - S ? 0:00 [migration/3]
1 0 24 2 20 0 0 0 - S ? 0:00 [ksoftirqd/3]
1 0 26 2 0 -20 0 0 - S< ? 0:00 [kworker/3:0H]
5 0 27 2 20 0 0 0 - S ? 0:00 [kdevtmpfs]
1 0 28 2 0 -20 0 0 - S< ? 0:00 [netns]
1 0 29 2 20 0 0 0 - S ? 0:01 [khungtaskd]
1 0 30 2 20 0 0 0 - S ? 0:00 [oom_reaper]
1 0 31 2 0 -20 0 0 - S< ? 0:00 [writeback]
1 0 32 2 20 0 0 0 - S ? 0:00 [kcompactd0]
1 0 33 2 0 -20 0 0 - S< ? 0:00 [crypto]
1 0 34 2 0 -20 0 0 - S< ? 0:00 [bioset]
1 0 35 2 0 -20 0 0 - S< ? 0:00 [kblockd]
1 0 36 2 0 -20 0 0 - S< ? 0:00 [watchdogd]
1 0 38 2 0 -20 0 0 - S< ? 0:00 [rpciod]
1 0 39 2 0 -20 0 0 - S< ? 0:00 [xprtiod]
1 0 40 2 20 0 0 0 - S ? 0:00 [kswapd0]
1 0 41 2 0 -20 0 0 - S< ? 0:00 [vmstat]
1 0 42 2 0 -20 0 0 - S< ? 0:00 [nfsiod]
1 0 52 2 0 -20 0 0 - S< ? 0:00 [kthrotld]
1 0 53 2 0 -20 0 0 - S< ? 0:00 [bioset]
1 0 54 2 0 -20 0 0 - S< ? 0:00 [bioset]
1 0 55 2 0 -20 0 0 - S< ? 0:00 [bioset]
1 0 56 2 0 -20 0 0 - S< ? 0:00 [bioset]
1 0 57 2 0 -20 0 0 - S< ? 0:00 [bioset]
1 0 58 2 0 -20 0 0 - S< ? 0:00 [bioset]
1 0 59 2 0 -20 0 0 - S< ? 0:00 [bioset]
1 0 60 2 0 -20 0 0 - S< ? 0:00 [bioset]
1 0 61 2 0 -20 0 0 - S< ? 0:00 [bioset]
1 0 62 2 0 -20 0 0 - S< ? 0:00 [bioset]
1 0 63 2 0 -20 0 0 - S< ? 0:00 [bioset]
1 0 64 2 0 -20 0 0 - S< ? 0:00 [bioset]
1 0 65 2 0 -20 0 0 - S< ? 0:00 [bioset]
1 0 66 2 0 -20 0 0 - S< ? 0:00 [bioset]
1 0 67 2 0 -20 0 0 - S< ? 0:00 [bioset]
1 0 68 2 0 -20 0 0 - S< ? 0:00 [bioset]
1 0 69 2 0 -20 0 0 - S< ? 0:00 [bioset]
1 0 70 2 0 -20 0 0 - S< ? 0:00 [bioset]
1 0 71 2 0 -20 0 0 - S< ? 0:00 [bioset]
1 0 72 2 0 -20 0 0 - S< ? 0:00 [bioset]
1 0 73 2 0 -20 0 0 - S< ? 0:00 [bioset]
1 0 74 2 0 -20 0 0 - S< ? 0:00 [bioset]
1 0 75 2 0 -20 0 0 - S< ? 0:00 [bioset]
1 0 76 2 0 -20 0 0 - S< ? 0:00 [bioset]
1 0 77 2 0 -20 0 0 - S< ? 0:00 [iscsi_eh]
1 0 78 2 0 -20 0 0 - S< ? 0:00 [dwc_otg]
1 0 80 2 0 -20 0 0 - S< ? 0:00 [DWC Notificatio]
1 0 81 2 1 -19 0 0 - S< ? 0:00 [VCHIQ-0]
1 0 82 2 1 -19 0 0 - S< ? 0:00 [VCHIQr-0]
1 0 83 2 0 -20 0 0 - S< ? 0:00 [VCHIQs-0]
1 0 84 2 20 0 0 0 - S ? 0:00 [VCHIQka-0]
1 0 85 2 10 -10 0 0 - S< ? 0:00 [SMIO]
1 0 87 2 -51 - 0 0 - S ? 1:42 [irq/92-mmc1]
1 0 89 2 0 -20 0 0 - S< ? 0:00 [bioset]
1 0 90 2 20 0 0 0 - S ? 0:14 [mmcqd/0]
1 0 94 2 20 0 0 0 - S ? 0:07 [jbd2/mmcblk0p7-]
1 0 95 2 0 -20 0 0 - S< ? 0:00 [ext4-rsv-conver]
1 0 96 2 0 -20 0 0 - S< ? 0:00 [ipv6_addrconf]
4 0 114 1 20 0 35112 9488 - Ss ? 0:27 /lib/systemd/systemd-journald
4 0 153 1 20 0 14628 3416 - Ss ? 0:01 /lib/systemd/systemd-udevd
1 0 232 2 0 -20 0 0 - S< ? 0:00 [cfg80211]
1 0 238 2 0 -20 0 0 - S< ? 0:00 [brcmf_wq/mmc1:0]
1 0 239 2 20 0 0 0 - S ? 0:45 [brcmf_wdog/mmc1]
4 100 278 1 20 0 17276 3508 - Ssl ? 0:02 /lib/systemd/systemd-timesyncd
4 0 308 1 20 0 23748 2540 - Ssl ? 0:05 /usr/sbin/rsyslogd -n
4 0 313 1 20 0 5296 2484 - Ss ? 0:03 /usr/sbin/cron -f
4 105 319 1 20 0 6588 3644 - Ss ? 0:06 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
5 0 342 1 20 0 2948 1684 - Ss ? 0:04 /sbin/dhcpcd -q -b
4 65534 356 1 20 0 5292 2436 - Ss ? 0:04 /usr/sbin/thd --triggers /etc/triggerhappy/triggers.d/ --socket /run/thd.socket --user nobody --de
4 108 359 1 20 0 6548 3312 - Ss ? 1:21 avahi-daemon: running [raspiMonitor.local]
4 0 362 1 20 0 7376 4332 - Ss ? 0:03 /lib/systemd/systemd-logind
1 108 375 359 20 0 6400 324 - S ? 0:00 avahi-daemon: chroot helper
4 0 418 1 20 0 39964 7328 - Ssl ? 0:00 /usr/sbin/lightdm
1 0 420 2 0 -20 0 0 - S< ? 0:00 [kworker/0:1H]
4 0 434 1 20 0 10200 4592 - Ss ? 0:00 /usr/sbin/sshd -D
5 0 438 1 20 0 10124 4108 - Ss ? 1:48 wpa_supplicant -B -c/etc/wpa_supplicant/wpa_supplicant.conf -iwlan0 -Dnl80211,wext
4 0 446 418 20 0 135364 33356 - Ssl+ tty7 5:39 /usr/lib/xorg/Xorg :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
4 0 474 418 20 0 32184 7788 - Sl ? 0:00 lightdm --session-child 14 17
4 1000 482 1 20 0 9764 5972 SyS_ep Ss ? 0:00 /lib/systemd/systemd --user
5 1000 485 482 20 0 11344 1380 - S ? 0:00 (sd-pam)
4 1000 490 474 20 0 52624 12816 poll_s Ssl ? 0:03 /usr/bin/lxsession -s LXDE-pi -e LXDE
0 1000 499 482 20 0 6504 3544 SyS_ep Ss ? 0:00 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation
1 1000 542 490 20 0 3792 228 - Ss ? 0:03 /usr/bin/ssh-agent x-session-manager
0 1000 548 482 20 0 39648 5736 poll_s Ssl ? 0:00 /usr/lib/gvfs/gvfsd
0 1000 553 482 20 0 56484 6428 futex_ Sl ? 0:00 /usr/lib/gvfs/gvfsd-fuse /run/user/1000/gvfs -f -o big_writes
0 1000 569 490 20 0 53008 13912 poll_s S ? 0:00 openbox --config-file /home/pi/.config/openbox/lxde-pi-rc.xml
0 1000 573 490 20 0 43096 8904 poll_s Sl ? 0:00 lxpolkit
0 1000 576 490 20 0 93540 20704 poll_s Sl ? 0:00 pcmanfm --desktop --profile LXDE-pi
1 1000 582 1 20 0 3792 228 - Ss ? 0:00 /usr/bin/ssh-agent -s
4 0 592 1 20 0 41432 8672 - Ssl ? 0:01 /usr/lib/policykit-1/polkitd --no-debug
1 1000 667 1 20 0 28444 6016 poll_s Ssl ? 0:00 /usr/lib/menu-cache/menu-cached /run/user/1000/menu-cached-:0
0 1000 678 482 20 0 74532 10776 poll_s Ssl ? 0:00 /usr/lib/gvfs/gvfs-udisks2-volume-monitor
4 0 689 1 20 0 59348 9420 - Ssl ? 0:02 /usr/lib/udisks2/udisksd --no-debug
0 1000 700 482 20 0 37264 4644 poll_s Ssl ? 0:00 /usr/lib/gvfs/gvfs-mtp-volume-monitor
1 0 704 2 0 -20 0 0 - S< ? 26:06 [kworker/u9:0]
1 0 706 2 0 -20 0 0 - S< ? 0:00 [hci0]
1 0 707 2 0 -20 0 0 - S< ? 0:00 [hci0]
1 0 708 1 20 0 2096 152 - S ? 0:00 /usr/bin/hciattach /dev/serial1 bcm43xx 3000000 flow - b8:27:eb:33:ee:8d
1 0 711 2 0 -20 0 0 - S< ? 26:25 [kworker/u9:1]
4 0 714 1 20 0 7268 3852 - Ss ? 0:00 /usr/lib/bluetooth/bluetoothd
0 1000 718 482 20 0 50964 4752 poll_s Ssl ? 0:00 /usr/lib/gvfs/gvfs-afc-volume-monitor
0 1000 723 482 20 0 38836 4996 poll_s Ssl ? 0:00 /usr/lib/gvfs/gvfs-gphoto2-volume-monitor
0 1000 727 482 20 0 37344 4432 poll_s Ssl ? 0:00 /usr/lib/gvfs/gvfs-goa-volume-monitor
4 0 728 1 20 0 35036 3712 - Ssl ? 0:00 /usr/bin/bluealsa
5 0 750 2 10 -10 0 0 - S< ? 0:00 [krfcommd]
0 1000 782 482 20 0 51336 7964 poll_s Sl ? 0:00 /usr/lib/gvfs/gvfsd-trash --spawner :1.4 /org/gtk/gvfs/exec_spaw/0
1 0 789 2 20 0 0 0 - S ? 0:00 [jbd2/mmcblk0p5-]
1 0 790 2 0 -20 0 0 - S< ? 0:00 [ext4-rsv-conver]
1 0 870 2 0 -20 0 0 - S< ? 0:00 [kworker/2:1H]
1 0 871 2 0 -20 0 0 - S< ? 0:00 [kworker/1:1H]
1 0 872 2 0 -20 0 0 - S< ? 0:00 [kworker/3:1H]
0 1000 16071 490 20 0 156604 32268 poll_s Sl ? 7:00 lxpanel --profile LXDE-pi
1 0 21241 2 20 0 0 0 - S ? 0:02 [kworker/3:3]
1 0 29968 2 20 0 0 0 - S ? 0:00 [kworker/3:2]
1 0 30190 2 20 0 0 0 - S ? 0:00 [kworker/1:1]
1 0 31690 2 20 0 0 0 - S ? 0:00 [kworker/1:0]
1 0 31746 2 20 0 0 0 - S ? 0:00 [kworker/0:0]
4 0 32012 1 20 0 5880 2884 - Ss tty1 0:00 /bin/login -f
4 1000 32024 32012 20 0 5144 2764 wait_w S+ tty1 0:00 -tcsh
1 0 32128 2 20 0 0 0 - S ? 0:00 [kworker/u8:0]
1 0 32190 2 20 0 0 0 - S ? 0:00 [kworker/2:2]
1 0 32243 2 20 0 0 0 - S ? 0:00 [kworker/u8:2]
1 0 32244 2 20 0 0 0 - S ? 0:00 [kworker/0:2]
1 0 32268 2 20 0 0 0 - S ? 0:00 [kworker/2:0]
1 0 32270 2 20 0 0 0 - S ? 0:00 [kworker/u8:1]
4 0 32300 434 20 0 11520 5792 - Ss ? 0:00 sshd: pi [priv]
5 1000 32311 32300 20 0 11520 3296 - S ? 0:00 sshd: pi@pts/0
0 1000 32314 32311 20 0 5144 2760 sigsus Ss pts/0 0:00 -tcsh
1 0 32322 2 20 0 0 0 - S ? 0:00 [kworker/2:1]
1 0 32331 2 20 0 0 0 - S ? 0:00 [kworker/u8:3]
0 1000 32332 32314 20 0 7240 1172 - R+ pts/0 0:00 ps axl
Мне бы очень хотелось узнать, что является причиной этого. В настоящее время мое единственное потенциальное решение состоит в том, чтобы ежедневно программировать автоматическую перезагрузку c, но это было бы маскировкой, а не решением проблемы.