小编use*_*901的帖子

如何启用请求异步模式?

对于此代码:

import sys

import gevent
from gevent import monkey

monkey.patch_all()

import requests
import urllib2

def worker(url, use_urllib2=False):
    if use_urllib2:
        content = urllib2.urlopen(url).read().lower()
    else:
        content = requests.get(url, prefetch=True).content.lower()
    title = content.split('<title>')[1].split('</title>')[0].strip()

urls = ['http://www.mail.ru']*5

def by_requests():
    jobs = [gevent.spawn(worker, url) for url in urls]
    gevent.joinall(jobs)

def by_urllib2():
    jobs = [gevent.spawn(worker, url, True) for url in urls]
    gevent.joinall(jobs)

if __name__=='__main__':
    from timeit import Timer
    t = Timer(stmt="by_requests()", setup="from __main__ import by_requests")  
    print 'by requests: %s seconds'%t.timeit(number=3)
    t = Timer(stmt="by_urllib2()", setup="from __main__ import …
Run Code Online (Sandbox Code Playgroud)

python asynchronous urllib2 gevent python-requests

17
推荐指数
3
解决办法
2万
查看次数

在Flask中实现单个工作者的最佳方式

我有一些蜘蛛下载页面并将数据存储在数据库中.我创建了使用管理面板(由Flask-Admin扩展)显示数据库的烧瓶应用程序.现在我想将功能附加到我的烧瓶应用程序以控制蜘蛛状态:打开/关闭.

我觉得它可以通过线程或多处理来实现.Celery不是一个好的决定,因为总计划必须使用最少的内存.

选择哪种方法来实现这个功能?

python multithreading multiprocessing celery flask

1
推荐指数
1
解决办法
2017
查看次数