6 python multithreading webkit python-2.7
我正在使用DryScrape来抓取一个javascript页面,如果出现错误,它偶尔会杀死进程.我已经尝试根据文档使用catch来防止它,但我还没弄明白:
try:
sess.visit('url'))
except webkit_server.EndOfStreamError:
continue
except webkit_server.NoResponeerror:
continue
except webkit_server.InvalidResponseError:
continue
except webkit_server.NoX11Error:
continue
Run Code Online (Sandbox Code Playgroud)
所以我有一个这样的设置,如果它们崩溃就重新启动线程:class Checker():def check_if_thread_is_alive(self):a = ThreadClass()a.start()
b = ThreadClass()
b.start()
c = ThreadClass()
c.start()
d = ThreadClass()
d.start()
while True:
if not a.is_alive():
print "Restarting A"
a = ThreadClass()
a.start()
if not b.is_alive():
print "Restarting B"
b = ThreadClass()
b.start()
if not c.is_alive():
print "Restarting C"
c = ThreadClass()
c.start()
if not d.is_alive():
print "Restarting D"
d = ThreadClass()
d.start()
Run Code Online (Sandbox Code Playgroud)
但是,每当我尝试重新启动一个线程时,我最终都会收到错误:
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File "Scrapper.py", line 30, in run
sess = dryscrape.Session(base_url = 'url')
File "/usr/local/lib/python2.7/dist-packages/dryscrape/session.py", line 18, in __init__
self.driver = driver or DefaultDriver()
File "/usr/local/lib/python2.7/dist-packages/dryscrape/driver/webkit.py", line 30, in __init__
super(Driver, self).__init__(**kw)
File "/usr/local/lib/python2.7/dist-packages/webkit_server.py", line 225, in __init__
self.conn = connection or ServerConnection()
File "/usr/local/lib/python2.7/dist-packages/webkit_server.py", line 444, in __init__
self._sock = (server or get_default_server()).connect()
File "/usr/local/lib/python2.7/dist-packages/webkit_server.py", line 414, in connect
sock.connect(("127.0.0.1", self._port))
File "/usr/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
error: [Errno 111] Connection refused
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来尝试解决这个问题,或者我缺少的东西?
因为:你正在尝试与自己建立联系。
need change target url.
Run Code Online (Sandbox Code Playgroud)
如果想连接到自己,请先创建服务。
File "/usr/local/lib/python2.7/dist-packages/webkit_server.py", line 414, in connect
sock.connect(("127.0.0.1", self._port))
File "/usr/lib/python2.7/socket.py", line 224, in meth <<<--- you're trying to connect to yourself.
return getattr(self._sock,name)(*args)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
487 次 |
最近记录: |