【问题标题】:Why does scrapyd throw: "'FeedExporter' object has no attribute 'slot'" exception?为什么scrapyd会抛出:“'FeedExporter'对象没有属性'slot'”异常?
【发布时间】:2016-05-14 07:02:31
【问题描述】:

我遇到了这样一种情况,即我的 scrapy 代码在从命令行使用时工作正常,但是当我在部署 (scrapy-deploy) 并使用 scrapyd api 调度后使用同一个蜘蛛时,它会在“scrapy.extensions. feedexport.FeedExporter" 类。

  1. 一个是在初始化“open_spider”信号时
  2. 第二个是在初始化“item_scraped”信号时
  3. last while "close_spider" 信号

1.“open_spider”信号错误

2016-05-14 12:09:38 [scrapy] INFO: Spider opened
2016-05-14 12:09:38 [scrapy] ERROR: Error caught on signal handler: <bound method ?.open_spider of <scrapy.extensions.feedexport.FeedExporter object at 0x7fafb1ce4a90>>
Traceback (most recent call last):
  File "/home/jonsnow/venv/scrapy1/lib/python2.7/site-packages/twisted/internet/defer.py", line 150, in maybeDeferred
    result = f(*args, **kw)
  File "/home/jonsnow/venv/scrapy1/lib/python2.7/site-packages/pydispatch/robustapply.py", line 55, in robustApply
    return receiver(*arguments, **named)
  File "/home/jonsnow/venv/scrapy1/lib/python2.7/site-packages/scrapy/extensions/feedexport.py", line 185, in open_spider
    uri = self.urifmt % self._get_uri_params(spider)
TypeError: float argument required, not dict

2.“item_scraped”信号错误:

2016-05-14 12:09:49 [scrapy] DEBUG: Scraped from <200 https://someurl.>
2016-05-14 12:09:49 [scrapy] ERROR: Error caught on signal handler: <bound method ?.item_scraped of <scrapy.extensions.feedexport.FeedExporter object at 0x7fafb1ce4a90>>
Traceback (most recent call last):
  File "/home/jonsnow/venv/scrapy1/lib/python2.7/site-packages/twisted/internet/defer.py", line 150, in maybeDeferred
    result = f(*args, **kw)
  File "/home/jonsnow/venv/scrapy1/lib/python2.7/site-packages/pydispatch/robustapply.py", line 55, in robustApply
    return receiver(*arguments, **named)
  File "/home/jonsnow/venv/scrapy1/lib/python2.7/site-packages/scrapy/extensions/feedexport.py", line 210, in item_scraped
    slot = self.slot
AttributeError: 'FeedExporter' object has no attribute 'slot'

3.“close_spider”信号错误:

2016-05-14 12:09:49 [scrapy] INFO: Closing spider (finished)
2016-05-14 12:09:49 [scrapy] ERROR: Error caught on signal handler: <bound method ?.close_spider of <scrapy.extensions.feedexport.FeedExporter object at 0x7fafb1ce4a90>>
Traceback (most recent call last):
  File "/home/jonsnow/venv/scrapy1/lib/python2.7/site-packages/twisted/internet/defer.py", line 150, in maybeDeferred
    result = f(*args, **kw)
  File "/home/jonsnow/venv/scrapy1/lib/python2.7/site-packages/pydispatch/robustapply.py", line 55, in robustApply
    return receiver(*arguments, **named)
  File "/home/jonsnow/venv/scrapy1/lib/python2.7/site-packages/scrapy/extensions/feedexport.py", line 193, in close_spider
    slot = self.slot
AttributeError: 'FeedExporter' object has no attribute 'slot'

  • Scrapy:1.1.0 版
  • scrapyd:1.1.0 版

也尝试过 scrapyd(1.1.0 和 scrapy 版本 0.24.6)

【问题讨论】:

  • 您使用的是特殊的 FEED_URI 吗?
  • 是的...我正在使用 FEED_URI...
  • FEED_URI 似乎不符合 open_spider 中的提要导出器,因此未设置槽(第一条语句中的异常),其他信号处理程序因此失败
  • 我正在使用正常的默认设置...我没有禁用提要 uri ,就像其他解决方案建议的那样..我没有做任何开箱即用的操作
  • 在 scrapyd.conf 中将 items_dir 设置为空是否有效?见github.com/scrapy/scrapyd/issues/31

标签: scrapy twisted scrapyd


【解决方案1】:

当 feedexporter 无法写入文件时会发生这种情况,当我在 excel 中打开之前导出的 csv 文件时会发生这种情况。尝试关闭打开的导出文件,它会正常工作

【讨论】:

    【解决方案2】:

    有时即使文件关闭或结果没有保存在文件中也会发生,但存在一些权限问题。尝试具有 root 访问权限的命令(在 linux 中 sudo 并在 windows 中以管理员身份运行),我已经尝试过并且问题已解决。

    【讨论】:

      猜你喜欢
      • 2011-12-12
      • 1970-01-01
      • 1970-01-01
      • 2014-03-12
      • 2021-07-08
      • 2021-04-28
      • 2013-09-04
      • 1970-01-01
      相关资源
      最近更新 更多