如何通过os.execl重新启动scrapy spider

如何通过os.execl重新启动scrapy spider,scrapy,Scrapy,请告诉我,如果出现错误,是否可以使用os.execl()重新启动spider?如果是,请举例说明如何做到这一点。 我的go代码的粗略示例 def parse(self, response): try ... except: os.execl("/usr/bin/scrapy", "crawl", "ruscale") os.kill(self.pid, signal.SIGKILL) 用这段代码我得到一个错误 Traceback (most

请告诉我,如果出现错误,是否可以使用os.execl()重新启动spider?如果是,请举例说明如何做到这一点。 我的go代码的粗略示例

def parse(self, response):
    try
     ...
    except:
      os.execl("/usr/bin/scrapy", "crawl", "ruscale")
      os.kill(self.pid, signal.SIGKILL)
用这段代码我得到一个错误

  Traceback (most recent call last):
  File "/usr/bin/scrapy", line 10, in <module>
    sys.exit(execute())
  File "/usr/lib/python3.6/site-packages/scrapy/cmdline.py", line 114, in execute
    settings = get_project_settings()
  File "/usr/lib/python3.6/site-packages/scrapy/utils/project.py", line 68, in get_project_settings
    settings.setmodule(settings_module_path, priority='project')
  File "/usr/lib/python3.6/site-packages/scrapy/settings/__init__.py", line 294, in setmodule
    module = import_module(module)
  File "/usr/lib64/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 941, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'model_lavka'
回溯(最近一次呼叫最后一次):
文件“/usr/bin/scrapy”,第10行,在
sys.exit(execute())
文件“/usr/lib/python3.6/site packages/scrapy/cmdline.py”,执行中的第114行
设置=获取项目设置()
文件“/usr/lib/python3.6/site packages/scrapy/utils/project.py”,第68行,在get\u project\u设置中
settings.setmodule(settings\u module\u path,priority='project')
setmodule中的文件“/usr/lib/python3.6/site packages/scrapy/settings/__init__;.py”,第294行
模块=导入模块(模块)
文件“/usr/lib64/python3.6/importlib/_init__.py”,第126行,在导入模块中
return _bootstrap._gcd_import(名称[级别:],包,级别)
文件“”,第994行,在_gcd_导入中
文件“”,第971行,在_find_和_load中
文件“”,第941行,在“查找”和“加载”中解锁
文件“”,第219行,在“调用”中,删除了“帧”
文件“”,第994行,在_gcd_导入中
文件“”,第971行,在_find_和_load中
文件“”,第953行,在“查找”和“加载”中解锁
ModuleNotFoundError:没有名为“model_lavka”的模块

我能问一下您为什么要这样做吗?刮取时遇到的任何错误都应使用HTTP_重试代码或其他方法进行处理。如果您尝试执行其他操作,您可能希望在爬行器之上操作一个级别并使用一个运行程序,那么重新启动爬行器需要执行的操作是什么?问题是,错误是完全不同的,包括没有例外的错误,例如,无法连接到代理服务器或与mysql失去连接。在这种情况下,我需要,这样蜘蛛才开始重新启动,直到它重新连接到数据库或代理服务器。我会把所有的逻辑放在管道中,连接到sql server等,如果代理失败,它应该自动重试。好的,我明白了。那么也许可以告诉我如何处理这样的异常?
回溯(最近一次调用):文件“/usr/lib64/python3.6/site packages/twisted/internet/defer.py”,第1418行,在_inlinecallbacksresult=g.send(result)文件“/usr/lib/python3.6/site packages/scrapy/core/downloader/middleware.py”第38行,进程中请求响应=屈服方法(请求=请求,蜘蛛=蜘蛛)文件“/usr/lib/python3.6/site packages/scrapy\u proxies/randomproxy.py”,第111行,进程中请求提升值错误(“所有代理都不可用,无法继续”)值错误:所有代理都不可用,无法继续