python 管道 非阻塞_python – 非阻塞Scrapy管道到数据库
我在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管道到数据库相关推荐
- python爬京东联盟_python爬虫框架scrapy实战之爬取京东商城进阶篇
前言 之前的一篇文章已经讲过怎样获取链接,怎样获得参数了,详情请看python爬取京东商城普通篇,本文将详细介绍利用python爬虫框架scrapy如何爬取京东商城,下面话不多说了,来看看详细的介绍吧 ...
- python分布式爬虫框架_python之简单Scrapy分布式爬虫的实现
分布式爬虫:爬虫共用同一个爬虫程序,即把同一个爬虫程序同时部署到多台电脑上运行,这样可以提高爬虫速度. 在默认情况下,scrapy爬虫是单机爬虫,只能在一台电脑上运行,因为爬虫调度器当中的队列queu ...
- python oracle连接池_python - DBUtils 连接池减少oracle数据库的连接数
问题: 接到需求,告知项目的oracle连接次数过多,对系统造成太过大的负担,要求减少oracle数据库的连接次数 分析: 仔细分析代码以后,发现产生问题的原因,在于之前要求提升oracle监控的监控 ...
- python gevent模块 下载_Python协程阻塞IO非阻塞IO同步IO异步IO
Python-协程-阻塞IO-非阻塞IO-同步IO-异步IO 一.协程 协程又称为微线程 CPU 是无法识别协程的,只能识别是线程,协程是由开发人员自己控制的.协程可以在单线程下实现并发的效果(实际计 ...
- python epoll 并发_Python语言之python并发原理(阻塞、非阻塞、epoll)
本文主要向大家介绍了Python语言之python并发原理(阻塞.非阻塞.epoll),通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 在Linux系统中 01 阻塞服务端 特征: ...
- python 进程池阻塞和非阻塞_python 之 并发编程(进程池与线程池、同步异步阻塞非阻塞、线程queue)...
9.11 进程池与线程池 池子使用来限制并发的任务数目,限制我们的计算机在一个自己可承受的范围内去并发地执行任务 池子内什么时候装进程:并发的任务属于计算密集型池子内什么时候装线程:并发的任务属于IO ...
- python并发处理同一个文件_python并发编程(并发与并行,同步和异步,阻塞与非阻塞)...
最近在学python的网络编程,学会了socket通信,并利用socket实现了一个具有用户验证功能,可以上传下载文件.可以实现命令行功能,创建和删除文件夹,可以实现的断点续传等功能的FTP服务器.但 ...
- python阻塞和非阻塞_Python基础必备知识:同步异步阻塞非阻塞
一.状态介绍 在了解其他概念之前,我们首先要了解进程的几个状态.在程序运行的过程中,由于被操作系统的调度算法控制,程序会进入几个状态:就绪,运行和阻塞. 就绪(Ready)状态:当进程已分配到除CPU ...
- python复制文件夹不阻塞_python学习笔记-(十四)I/O多路复用 阻塞、非阻塞、同步、异步...
1. 概念说明 1.1 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方).操作系统的核心是内核,独立于普通的应用程序,可 ...
最新文章
- HTTP 错误 404.2 - Not Found 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面 详细错误:HTTP 错误...
- 目标检测之YOLO V2 V3
- CoreGraphics之CGContextSaveGState与UIGraphicsPushContext
- 11-提升R语言程序性能gc()
- ekf pose使用方法 ros_【百川小课堂】第13课—ROS学习(二)
- Css中实现一个盒子固定宽度,另一个盒子宽度自适应的方法
- switchyomega规则列表备份_一键备份微博并导出生成PDF,顺便用Python分析微博账号数据...
- 蒙特卡罗树搜索+深度学习 -- AlphaGo原版论文阅读笔记
- 微软官方Power Query M语言规范参考手册(Power Query M function reference)
- 密度图与等高线图——Note_5
- 银行理财产品的十个坑
- redis集群(服务端sharding)
- 在51cto开博补充篇_为何叫~静水流深~
- html如何做动态桌面壁纸,wallpaper engine怎么自己做壁纸?动态壁纸制作方法
- 为什么要用谷歌浏览器翻译插件?| 文末福利
- 阶段二第一部分:第2章 Nginx进阶与实战
- 什么是GPU计算?阿里云国际版有没有GPU计算?-Unirech
- 愿有岁月可回首,更敬年少一杯酒
- 小程序实现实名、支付及签约
- 导出iPhone/iPad中的Safari书签
热门文章
- 复旦大学计算机专业直博,上海复旦大学计算机科学技术学院2016博士招生选拔办法...
- perl 中单引号双引号的区别-----perl学习笔记
- Django(五)模型(model)系统 -- 常用字段和字段参数
- ashx是什么文件,如何创建[转]
- 乐观锁与悲观锁——解决并发问题
- 再看nf_conntrack: table full问题
- 数据库设计Step by Step (9)——ER-to-SQL转化
- 超简略的samba配置
- 见到了“公司”定义一个Company类,那么见到了“字段”是不是也可定义一个Column类?...
- JS的IE和Firefox兼容性汇编(原作:hotman_x)- -