Сельдерей 'Worker-n' pid: выход xxxx с кодом выхода 1, когда я импортирую hmmlearn
В моем файле tasks.py, когда я импортирую hmmlearn,
from hmmlearn import hmm
и начать мои работники сельдерея, я получаю следующую ошибку
[2017-06-14 09:18:27,638: INFO/MainProcess] Received task:
sm.tasks.mytask[4e46806e-6f0f-420f-baac-c727c2a382d4]
[2017-06-14 09:18:27,716: ERROR/MainProcess] Process 'Worker-4' pid:5264
exited with 'exitcode 1'
[2017-06-14 09:18:29,857: ERROR/MainProcess] Process 'Worker-7' pid:3172
exited with 'exitcode 1'
[2017-06-14 09:18:29,857: ERROR/MainProcess] Process 'Worker-6' pid:5768
exited with 'exitcode 1'
[2017-06-14 09:18:29,857: ERROR/MainProcess] Process 'Worker-5' pid:5236
exited with 'exitcode 1'
[2017-06-14 09:18:31,450: ERROR/MainProcess] Process 'Worker-8' pid:5876
exited with 'exitcode 1'
И после того, как я выключил работника,
[2017-06-14 09:19:28,545: WARNING/MainProcess] c:\anaconda3\lib\site-
packages\celery\apps\worker.py:161: CDeprecationWarning:
Starting from version 3.2 Celery will refuse to accept pickle by default.
Если я просто закомментирую этот импорт и код, использующий этот импорт, все работает нормально. Но я могу выполнить все задачи (включая код hmm) как автономный код Python на ipython без каких-либо проблем.
Я использую дистрибутив conda со следующими деталями
Current conda install:
platform : win-64
conda version : 4.3.21
conda is private : False
conda-env version : 4.3.21
conda-build version : 1.21.3
python version : 3.5.2.final.0
requests version : 2.14.2
λ conda list | grep celery
celery 3.1.18 <pip>
λ conda list | grep kombu
kombu 3.0.37 <pip>
λ conda list | grep hmmlearn
hmmlearn 0.1.1 np111py35_0 omnia
Что я должен делать?
2 ответа
Это может быть потому, что сельдерей 3.1.xx поставляется в комплекте с бильярдом 3.3.
Если вы обновите этот пакет (до 3.5 на момент написания), служба может снова работать.
pip install --upgrade billiard
Я просто наткнулся на похожую ситуацию. модернизация billiard
3.5, как предложено в другом ответе, не вариант (потому что он конфликтует с Celery==3.1.25
и я предпочитаю эту конкретную версию для Windows его поддержки).
Однако я выяснил, что в моем случае проблема, скорее всего, была связана с этой проблемой - она возникала только тогда, когда я пытался импортировать что-либо из sklearn
в процессе работника.
Проблема была решена путем добавления этого фрагмента до import
с из sklearn
:
from multiprocessing import current_process
try:
current_process()._config
except AttributeError:
current_process()._config = {'semprefix': '/mp'}