Celery命令行给出窗口错误87参数不正确

时间:2016-11-14 07:26:11

标签: python windows celery

我正在使用celery作为烧瓶中的异步队列,我使用以下代码设置了队列。

from src import app
from celery import Celery

celery = Celery(app.name, broker=app.config['CELERY_BROKER_URL'])
celery.conf.update(app.config)

在我的烧瓶的config.py中。

#   Celery config for queue
CELERY_BROKER_URL = 'redis://localhost:6379/1'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/1'

我试图通过以下命令在Windows上使用命令行运行worker。

celery worker -A src.celery

它让我跟随堆栈跟踪。

-------------- celery@DESKTOP-F3RS3C9 v4.0.0 (latentcall)
---- **** -----
--- * ***  * -- Windows-10-10.0.14393 2016-11-14 12:23:49
-- * - **** ---
- ** ---------- [config]
- ** ---------- .> app:         src:0x4e6e550
- ** ---------- .> transport:   redis://localhost:6379/1
- ** ---------- .> results:     redis://localhost:6379/1
- *** --- * --- .> concurrency: 4 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** -----
 -------------- [queues]
                .> celery           exchange=celery(direct) key=celery


[2016-11-14 12:23:49,463: CRITICAL/MainProcess] Unrecoverable error: TypeError('must be integer<K>, not _subprocess_handle',)
Traceback (most recent call last):
  File "c:\python27\lib\site-packages\celery\worker\worker.py", line 203, in start
    self.blueprint.start(self)
  File "c:\python27\lib\site-packages\celery\bootsteps.py", line 119, in start
    step.start(parent)
  File "c:\python27\lib\site-packages\celery\bootsteps.py", line 370, in start
    return self.obj.start()
  File "c:\python27\lib\site-packages\celery\concurrency\base.py", line 131, in start
    self.on_start()
  File "c:\python27\lib\site-packages\celery\concurrency\prefork.py", line 112, in on_start
    **self.options)
  File "c:\python27\lib\site-packages\billiard\pool.py", line 1008, in __init__
    self._create_worker_process(i)
  File "c:\python27\lib\site-packages\billiard\pool.py", line 1117, in _create_worker_process
    w.start()
  File "c:\python27\lib\site-packages\billiard\process.py", line 122, in start
    self._popen = self._Popen(self)
  File "c:\python27\lib\site-packages\billiard\context.py", line 383, in _Popen
    return Popen(process_obj)
  File "c:\python27\lib\site-packages\billiard\popen_spawn_win32.py", line 64, in __init__
    _winapi.CloseHandle(ht)
TypeError: must be integer<K>, not _subprocess_handle

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "c:\python27\lib\site-packages\billiard\spawn.py", line 159, in spawn_main
    new_handle = steal_handle(parent_pid, pipe_handle)
  File "c:\python27\lib\site-packages\billiard\reduction.py", line 121, in steal_handle
    _winapi.PROCESS_DUP_HANDLE, False, source_pid)
WindowsError: [Error 87] The parameter is incorrect

我已经安装了redis包,还加了redis for windows。

1 个答案:

答案 0 :(得分:2)

升级到4.0.0后我遇到同样的问题。

官方文档说此版本已删除Microsoft Windows支持。

http://docs.celeryproject.org/en/latest/whatsnew-4.0.html#removed-features

此问题因不支持的平台而受到拒绝:https://github.com/celery/celery/issues/3551