Сельдерей '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'}
Другие вопросы по тегам