我试图用多处理模块编写一个spider
下面是我的python代码:
# -*- coding:utf-8 -*-
import multiprocessing
import requests
class SpiderWorker(object):
def __init__(self, q):
self._q = q
def run(self):
def _crawl_item(url):
requests.get("http://www.baidu.com")
if respon.ok:
print respon.url
while True:
rst = self._q.get()
_crawl_item(rst)
def general_worker():
q = multiprocessing.Queue()
CPU_COUNT = multiprocessing.cpu_count()
worker_processes = [
multiprocessing.Process(target=SpiderWorker(q).run)
for i in range(CPU_COUNT)
]
map( lambda process: process.start(), worker_processes )
return q, worker_processes
也许是我的过程错了 每次我运行这个代码,我的进程都会告诉我
^{pr2}$希望你喜欢
这里的主要问题是您没有任何关于流程失败的信息。它可能是gevent,但也可能是其他的东西。因此,了解进程终止的实际原因是在执行其他操作之前的第一步。在
你需要的是^{} :
此代码的作用:
multiprocessing
模块事件(以防万一您可能不需要它们)。在.exception()
方法,它不仅记录消息(这是毫无意义的,因为我们不知道实际发生了什么),而且最重要的是记录整个错误回溯—这是我们实际需要的。在相关问题 更多 >
编程相关推荐