셀로리와 파이썬으로 시작해서 끝까지 실행되는 온라인 파일 하나를 찾을 수없는 것 같아서 그것을 보여주기 위해 노력했습니다. 웬일인지 이것이 효과가 없기 때문에 셀러리를 처음 접했습니다. 내가 로컬 호스트와 입력 콘솔에서 레디 스 서버를 실행 한 다음Canonical Celery single file hello world
from celery import Celery
import time
app = Celery(
'test_celery'
,broker= 'redis://localhost/0',
backend='redis://localhost/1'
)
@app.task
def add(x, y):
time.sleep(2)
return x + y
if __name__ == '__main__':
result = add.delay(4, 4)
print(result.get())
: test_celery.py
에서 나는 아래의 내용을 추가 그래서
celery -A test_celery worker --loglevel=info
, 이제 노동자가 수신 내가 python test_celery.py
생각을 실행하려고 콘솔 출력에서 멋진 8을보아야합니다. 작업자 콘솔의 로그에서 예상대로 작동하지만 result.get
에 대한 호출이 주 프로그램 콘솔에서 중지되는 [2015-01-02 16:53:08,807: INFO/MainProcess] Task test_celery.add[2c6b19c0-3a3f-45d2-8024-64e112fa3419] succeeded in 1.9970000002067536s: 8
이 표시됩니다.
누군가가 위대한 사람이 될 수 있다면 나는 여기에 기본적인 것을 놓치고 있어야합니다.
내 컴퓨터에 rabbitmq 만 있기 때문에 코드가 나에게 기대되는대로 작동합니다 ('8' 인쇄),'backend ='amqp ', broker ='amqp : // ''만 사용했습니다. 그래서 당신 redis 설정에 문제가 있다고 의심됩니다. 나는 redis에 많은 exeprience가 없지만, 나는 분리 된 데이터베이스를 사용하는 것이 낙담했다는 것을 상기합니다. – kalhartt
흥미롭게도 우분투 가상 박스에서이 코드를 테스트했는데 redis와 amqp와 함께 작동합니다. 그것은 또한 다른 redis 데이터베이스 또는 동일을 사용하여 날씨를 작동합니다. 이것은 플랫폼 문제 일 것입니다. 저는 원래 Windows 7에서 테스트를 진행 했었습니다. 회사의 기발한 네트워킹/DNS 습관과 관련 될 수도 있습니다. – user25064