我在Scrapy中有一个Web抓取器,可以获取数据项.我想异步地将它们插入到数据库中.

例如,我有一个事务,使用SQLAlchemy Core将一些项目插入到我的数据库中:

def process_item(self, item, spider):

with self.connection.begin() as conn:

conn.execute(insert(table1).values(item['part1'])

conn.execute(insert(table2).values(item['part2'])

我知道可以与Twisted with alchimia异步使用SQLAlchemy Core.alchimia的文档代码示例如下.

我不明白的是如何在alchimia框架中使用我的上述代码.如何设置process_item以使用反应器?

我可以这样做吗?

@inlineCallbacks

def process_item(self, item, spider):

with self.connection.begin() as conn:

yield conn.execute(insert(table1).values(item['part1'])

yield conn.execute(insert(table2).values(item['part2'])

我怎么写反应堆部分?

或者是否有更简单的方法在Scrapy管道中进行非阻塞数据库插入?

供参考,以下是alchimia文档中的代码示例:

from alchimia import TWISTED_STRATEGY

from sqlalchemy import (

create_engine, MetaData, Table, Column, Integer, String

)

from sqlalchemy.schema import CreateTable

from twisted.internet.defer import inlineCallbacks

from twisted.internet.task import react

@inlineCallbacks

def main(reactor):

engine = create_engine(

"sqlite://", reactor=reactor, strategy=TWISTED_STRATEGY

)

metadata = MetaData()

users = Table("users", metadata,

Column("id", Integer(), primary_key=True),

Column("name", String()),

)

# Create the table

yield engine.execute(CreateTable(users))

# Insert some users

yield engine.execute(users.insert().values(name="Jeremy Goodwin"))

yield engine.execute(users.insert().values(name="Natalie Hurley"))

yield engine.execute(users.insert().values(name="Dan Rydell"))

yield engine.execute(users.insert().values(name="Casey McCall"))

yield engine.execute(users.insert().values(name="Dana Whitaker"))

result = yield engine.execute(users.select(users.c.name.startswith("D")))

d_users = yield result.fetchall()

# Print out the users

for user in d_users:

print "Username: %s" % user[users.c.name]

if __name__ == "__main__":

react(main, [])

python 管道 非阻塞_python – 非阻塞Scrapy管道到数据库相关推荐

  1. python爬京东联盟_python爬虫框架scrapy实战之爬取京东商城进阶篇

    前言 之前的一篇文章已经讲过怎样获取链接,怎样获得参数了,详情请看python爬取京东商城普通篇,本文将详细介绍利用python爬虫框架scrapy如何爬取京东商城,下面话不多说了,来看看详细的介绍吧 ...

  2. python分布式爬虫框架_python之简单Scrapy分布式爬虫的实现

    分布式爬虫:爬虫共用同一个爬虫程序,即把同一个爬虫程序同时部署到多台电脑上运行,这样可以提高爬虫速度. 在默认情况下,scrapy爬虫是单机爬虫,只能在一台电脑上运行,因为爬虫调度器当中的队列queu ...

  3. python oracle连接池_python - DBUtils 连接池减少oracle数据库的连接数

    问题: 接到需求,告知项目的oracle连接次数过多,对系统造成太过大的负担,要求减少oracle数据库的连接次数 分析: 仔细分析代码以后,发现产生问题的原因,在于之前要求提升oracle监控的监控 ...

  4. python gevent模块 下载_Python协程阻塞IO非阻塞IO同步IO异步IO

    Python-协程-阻塞IO-非阻塞IO-同步IO-异步IO 一.协程 协程又称为微线程 CPU 是无法识别协程的,只能识别是线程,协程是由开发人员自己控制的.协程可以在单线程下实现并发的效果(实际计 ...

  5. python epoll 并发_Python语言之python并发原理(阻塞、非阻塞、epoll)

    本文主要向大家介绍了Python语言之python并发原理(阻塞.非阻塞.epoll),通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 在Linux系统中 01 阻塞服务端 特征: ...

  6. python 进程池阻塞和非阻塞_python 之 并发编程(进程池与线程池、同步异步阻塞非阻塞、线程queue)...

    9.11 进程池与线程池 池子使用来限制并发的任务数目,限制我们的计算机在一个自己可承受的范围内去并发地执行任务 池子内什么时候装进程:并发的任务属于计算密集型池子内什么时候装线程:并发的任务属于IO ...

  7. python并发处理同一个文件_python并发编程(并发与并行,同步和异步,阻塞与非阻塞)...

    最近在学python的网络编程,学会了socket通信,并利用socket实现了一个具有用户验证功能,可以上传下载文件.可以实现命令行功能,创建和删除文件夹,可以实现的断点续传等功能的FTP服务器.但 ...

  8. python阻塞和非阻塞_Python基础必备知识:同步异步阻塞非阻塞

    一.状态介绍 在了解其他概念之前,我们首先要了解进程的几个状态.在程序运行的过程中,由于被操作系统的调度算法控制,程序会进入几个状态:就绪,运行和阻塞. 就绪(Ready)状态:当进程已分配到除CPU ...

  9. python复制文件夹不阻塞_python学习笔记-(十四)I/O多路复用 阻塞、非阻塞、同步、异步...

    1. 概念说明 1.1 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方).操作系统的核心是内核,独立于普通的应用程序,可 ...

最新文章

  1. HTTP 错误 404.2 - Not Found 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面 详细错误:HTTP 错误...
  2. 目标检测之YOLO V2 V3
  3. CoreGraphics之CGContextSaveGState与UIGraphicsPushContext
  4. 11-提升R语言程序性能gc()
  5. ekf pose使用方法 ros_【百川小课堂】第13课—ROS学习(二)
  6. Css中实现一个盒子固定宽度,另一个盒子宽度自适应的方法
  7. switchyomega规则列表备份_一键备份微博并导出生成PDF,顺便用Python分析微博账号数据...
  8. 蒙特卡罗树搜索+深度学习 -- AlphaGo原版论文阅读笔记
  9. 微软官方Power Query M语言规范参考手册(Power Query M function reference)
  10. 密度图与等高线图——Note_5
  11. 银行理财产品的十个坑
  12. redis集群(服务端sharding)
  13. 在51cto开博补充篇_为何叫~静水流深~
  14. html如何做动态桌面壁纸,wallpaper engine怎么自己做壁纸?动态壁纸制作方法
  15. 为什么要用谷歌浏览器翻译插件?| 文末福利
  16. 阶段二第一部分:第2章 Nginx进阶与实战
  17. 什么是GPU计算?阿里云国际版有没有GPU计算?-Unirech
  18. 愿有岁月可回首,更敬年少一杯酒
  19. 小程序实现实名、支付及签约
  20. 导出iPhone/iPad中的Safari书签

热门文章

  1. 复旦大学计算机专业直博,上海复旦大学计算机科学技术学院2016博士招生选拔办法...
  2. perl 中单引号双引号的区别-----perl学习笔记
  3. Django(五)模型(model)系统 -- 常用字段和字段参数
  4. ashx是什么文件,如何创建[转]
  5. 乐观锁与悲观锁——解决并发问题
  6. 再看nf_conntrack: table full问题
  7. 数据库设计Step by Step (9)——ER-to-SQL转化
  8. 超简略的samba配置
  9. 见到了“公司”定义一个Company类,那么见到了“字段”是不是也可定义一个Column类?...
  10. JS的IE和Firefox兼容性汇编(原作:hotman_x)- -