Scrapy Clusters是扩展大型、连续的 scrapy 项目的一种很好的新方法。它在 VM 中设置,并与来自不同工具的多个实例一起运行。
我已经构建了 VM 并安装了必要的工具,例如 Redis、Kafka 和 zookeeper。
在第一次测试爬网之前,我只是停留在一条简单的线上,我不知道这是 python 问题、安装问题还是什么。
当我尝试
python kafka_monitor.py 运行
我得到:
Traceback (most recent call last): File "kafka_monitor.py", line 512, in sys.exit(main())
File "kafka_monitor.py", line 497, in main kafka_monitor.run()
File "kafka_monitor.py", line 413, in run self._setup_kafka()
File "kafka_monitor.py", line 232, in _setup_kafka ret_val = _hidden_setup()
File "/usr/local/lib/python2.7/dist-packages/scutils/method_timer.py", line 46, in f2 retval = f(*args)
File "kafka_monitor.py", line 218, in _hidden_setup self.kafka_conn = KafkaClient(self.settings['KAFKA_HOSTS'])TypeError: ____init___() takes exactly 1 argument (2 given)
settings.py
包括:
KAFKA_HOSTS = 'localhost:9092'
KAFKA_INCOMING_TOPIC = 'demo.incoming'
KAFKA_GROUP = 'demo-group'
KAFKA_FEED_TIMEOUT = 5
KAFKA_CONN_TIMEOUT = 5
按照 Quick Start 的指示我也做了一个localsettings.py
# Here, 'scdev' is the host with Kafka, Redis, and Zookeeper
REDIS_HOST = 'scdev'
KAFKA_HOSTS = 'scdev:9092'
ZOOKEEPER_HOSTS = 'scdev:2181'
即使我进入 kafka_monitor.py
并更改第 218 行(从上面的初始错误回溯)
来自:
self.kafka_conn = KafkaClient(self.settings['KAFKA_HOSTS'])
收件人:
self.kafka_conn = KafkaClient(self.settings['scdev:9092'])
我收到同样的错误。
最佳答案
成功!
@Madison Bahmer 感谢您引导我朝着正确的方向前进。我只想说明我是如何让它运行的。
kafka_monitor.py
中实际代码的第一行(即第 3 行)如下:
from kafka.client import KafkaClient
我把它改成了:
from kafka import KafkaClient
这让它起作用了!
这是短视的解决方案吗?如果没有:
from kafka.client import KafkaClient
我不知道,但如果出现与此相关的特定问题,我会在未来更新。
关于python - Scrapy 集群 kafka_monitor.py 中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35834772/