2
我試圖使用Scrapy與使用RabbitMQ的消費者消費。使用Scrapy與RabbitMQ的
這裏是我的代碼片段:
def runTester(body):
spider = MySpider(domain=body["url"], body=body)
settings = get_project_settings()
crawler = Crawler(settings)
crawler.signals.connect(reactor.stop, signal=signals.spider_closed)
crawler.configure()
crawler.crawl(spider)
crawler.start()
log.start()
reactor.run()
def callback(ch, method, properties, body):
body = json.loads(body)
runTester(body)
ch.basic_ack(delivery_tag=method.delivery_tag)
if __name__ == '__main__':
connection = pika.BlockingConnection(pika.ConnectionParameters(host=settings.RABBITMQ_HOST))
channel = connection.channel()
channel.queue_declare(queue=settings.RABBITMQ_TESTER_QUEUE, durable=True)
channel.basic_qos(prefetch_count=1)
channel.basic_consume(callback, queue=settings.RABBITMQ_TESTER_QUEUE)
channel.start_consuming()
正如你所看到的問題是反應器停工時,第一條消息被消耗和蜘蛛運行。這是什麼解決方法?
我希望能夠保持反應堆的運行,同時繼續運行新的爬蟲的消息從RabbitMQ的收到的所有時間。
這可行,但它不是即刻運行scrapy過程,而是在一段時間後運行。你可以讓我知道我們如何在安排後立即運行蜘蛛? – neeagl
不,我的錯誤。它的工作正常。 :)感謝您的建議。 :) – neeagl
有關從RabbitMQ消費的問題,而不是關於向jobs提交工作的問題。我也想要使用RabydMQ的優秀例子。 – Chris