마지막으로 나는 토네이도 Beanstalkt와 파이썬 스크립트를 썼다.
여기 내 코드입니다.
import tornado
import beanstalkt
def show(msg, value, cb):
print(msg % value)
cb()
def stop():
client.close(ioloop.stop)
def connect(s):
print('Connection established')
reserve()
def reserve():
client.reserve(callback=lambda s: show(
"Reserved job %s", s, lambda: delete(s["id"])))
def delete(job_id):
client.delete(job_id, callback=lambda s: show(
"Deleted job with id %d", job_id, reserve))
ioloop = tornado.ioloop.IOLoop.instance()
client = beanstalkt.Client(host='my-server', port=11300)
client.connect(callback=connect)
client.watch("my-tube")
ioloop.start()
이 행은 내 beanstalk 서버에 대한 연결을 설정합니다. 연결 내가 connect
방법 내부 콜백을 사용하고 있는데 그 이유는 성공하면
client.connect(callback=connect)
client.watch("my-tube")
ioloop.start()
나는 노동자를 시작합니다. watch
메서드는 내가 원하는 튜브에 초점을 맞추고 start
메서드는 I/O 비 블로킹 비동기 루프를 시작합니다.
내 connect
기능에서 나는 reserve
기능을 호출 할 것입니다. 예약 할 수있는 작업이없고 시간 초과가 없다면 reserve
은 미래의 작업을 기다리고 콩 주머니로 트리거됩니다.
그 후 나는 reserve
함수 내에서 원하는 것을 줄 수 있습니다. 여기에 내 프로세스를 테스트하기위한 show 함수를 보냅니다. 내 인쇄 후 삭제 콜백을 호출하여 현재 작업을 삭제합니다.
희망이 있습니다.