셀러리와 Redis를 함께 사용하고 있습니다. 내 tasks.py 파일에 코드를 다음 있습니다 : 셀러리 작업에 대한 인수하지만TypeError 올바른 인수에도 셀러리가 있습니다.
import zmq
from tasks import twitterDP
from celery.result import AsyncResult
import time
class WorkFlow(object):
def __init__(self):
self.ctx = zmq.Context()
self.socket_pull = self.ctx.socket(zmq.PULL)
self.socket_pull.bind("tcp://127.0.0.1:5860")
def do_work(self):
while True:
recv_msg = self.socket_pull.recv_json()
print twitterDP.apply_async(("random"))
time.sleep(1)
if __name__ == "__main__":
wf = WorkFlow()
wf.do_work()
이벤트 :
from celery import Celery
from faker import Factory
fake = Factory.create()
app = Celery("tasks")
app.conf.broker_url = 'redis://localhost:6379/0'
app.conf.result_backend = 'redis://localhost:6379/0'
@app.task
def twitterDP(hashtag):
if hashtag:
return ["From Twitter " + fake.text(20) + " hashtag # " + hashtag for x in range(5)]
return []
과 작업을 실행하기 위해, 나는 다음과 같은 코드를 포함하는 또 다른 스크립트가
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/sarvagya/Desktop/work/django_work/ed3/venv/lib/python2.7/site-packages/celery/app/task.py", line 517, in apply_async
check_arguments(*(args or()), **(kwargs or {}))
TypeError: twitterDP() takes exactly 1 argument (6 given)
내 twitterDP
기능에 대한 두 개의 매개 변수를 사용하는 경우
(x given)
인 TypeError를 발생 시켰습니다. 여기서 x는 전달한 문자열의 길이입니다. 위의 예제에서, 그것의
random
은 6을 산출합니다. 이것은 셀러리의 버그입니까? 또는 어딘가에서 코드가 잘못 되었습니까?
예. 이것은 충분한 커피가 없을 때 일어나는 일입니다. 덕분에이 문제가 해결되었습니다. – Pant