2016-12-16 29 views
8

Jestem nowy z selera i jestem z samouczka podane na ich stronie mam ten błądnaciowego WindowsError: [Błąd 6] Uchwyt jest nieprawidłowy

from celery import Celery 
app = Celery('tasks', broker='pyamqp://[email protected]//') 

@app.task 
def add(x, y): 
    return x + y 

i cmd pokazuje błąd podobny do tego

-------------- [email protected] v4.0.2 (latentcall) 
---- **** ----- 
--- * *** * -- Windows-10-10.0.14393 2016-12-16 20:05:48 
-- * - **** --- 
- ** ---------- [config] 
- ** ---------- .> app:   tasks:0x4591950 
- ** ---------- .> transport: amqp://guest:**@localhost:5672// 
- ** ---------- .> results:  disabled:// 
- *** --- * --- .> concurrency: 4 (prefork) 
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker) 
--- ***** ----- -------------- [queues] 
       .> celery   exchange=celery(direct) key=celery 


[tasks] . tasks.add 

[2016-12-16 20:05:49,029: CRITICAL/MainProcess] Unrecoverable error: 
TypeError('argument 1 must be an integer, 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: argument 1 must be an integer, 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 126, in 
steal_handle 
    _winapi.DUPLICATE_SAME_ACCESS | _winapi.DUPLICATE_CLOSE_SOURCE) >WindowsError: [Error 6] The handle is invalid 

Odpowiedz

0

Wygląda na to, że Twój serwer rabbitmq nie jest uruchomiony. Czy uruchomiłeś instalację i uruchomiłeś serwer rabbimq?

Możesz zamówić rabbitmq docs and install it. Uruchom serwer RabbitMQ a następnie rozpocząć pracownika selera z aplikacją

celery worker -l info -A tasks 
+0

dzięki !, ale polecenie seler rzuca ten sam błąd des skategoryzowane w pytaniu. –

1

Seler nie jest już obsługiwane w systemie Windows od 4,0, patrz poniżej: http://docs.celeryproject.org/en/latest/whatsnew-4.0.html#removed-features

Niestety, ten błąd wydaje się być jednym z objawów niepożądanych (wsparcie dla procesu uchwyty usunięty)

Najprościej jest downgrade seler, następnie wyjąć go najpierw: pip install celery==3.1.18

+0

obniżona do selera 3.1.18 i pipa obniżyły następujące biblioteki: amqp 2.1.3 -> 1.4.9, bilard 3.5.0.2 -> 3.3.0.23, kombu 4.0.1 -> 3.0.37 również. Teraz django_celery_results narzeka: 'file "E: \ virtualenvs \ kokpity \ lib \ site-packages \ django_celery_results \ models.py", linia 8, w od celery.five import python_2_unicode_compatible ImportError: Nie można zaimportować nazwy python_2_unicode_compatible' –

+0

Wyniki django-selekcji są zgodne tylko od selera 4+. Djcelery powinny działać zamiast tego. –