V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
zzWinD
V2EX  ›  Python

webpy图片下载守护程序

  •  
  •   zzWinD · 2012-07-17 10:18:21 +08:00 · 5935 次点击
    这是一个创建于 4544 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我要实现一个图片下载程序,思路是这样的:
    webpy
    前台输入图片地址保存到数据库,后台有一个守护程序。发现有新的未下载的图片,马上下载。
    现在想问的是 webpy 框架 自身可以实现这个守护程序吗?

    说简明一点:webpy启动的时候,下载图片的程序也运行。
    25 条回复    1970-01-01 08:00:00 +08:00
    sykp241095
        1
    sykp241095  
       2012-07-17 10:35:18 +08:00
    可以,但没有这么做的
    zzWinD
        2
    zzWinD  
    OP
       2012-07-17 10:46:37 +08:00
    @sykp241095 谢谢你的回复,
    请问什么方法才更适合我的需求?
    sykp241095
        3
    sykp241095  
       2012-07-17 10:48:45 +08:00
    You need a standalone consumer.
    judezhan
        4
    judezhan  
       2012-07-17 11:55:53 +08:00
    ...我实在是没明白你的意思。一个cronjob+shell脚本就搞定了吧?还是我曲解了你的意思?
    shellex
        5
    shellex  
       2012-07-17 12:25:20 +08:00
    @zzWinD 的意思是需要一个web介面提交下载地址,让呼叫一个下载程序去下载。

    如果是我的话,我也会用一个独立程序来处理下载的事宜。你可以让这个下载程序访问数据库获得需要下载的任务,也可以让那个web暴露一个API提供任务给下载程序。
    zzWinD
        6
    zzWinD  
    OP
       2012-07-17 14:48:25 +08:00
    @judezhan 我比较喜欢收集网上的图片,但是每次看到另存为嫌麻烦。就像做个站点。把图片的地址提交上去,让服务器去下载好。有种随时随地保存图片的意思。。不好意思。。文采不好。


    @shellex 嗯,我想也是独立的程序去下载。有点类似windows C#里面的服务,就默默的运行在后端。有新图片了,去下载。我想webpy 有没有这种daemon 的功能。
    messense
        7
    messense  
       2012-07-17 15:31:55 +08:00
    也许需要用 python-rq 或者 celery 这样的Task Queue?
    shellex
        8
    shellex  
       2012-07-17 16:04:24 +08:00
    @zzWinD 这和webpy无关。web部分也不应该处理这种任务。如果是Linux配合cron或者自己做个daemon就可以了。
    arzon
        9
    arzon  
       2012-07-17 16:11:06 +08:00
    @zzWinD 典型的生产者-消费者的需求. 可以用线程+队列解决.
    随应用服务器初始化一个消费者线程和生产队列. 提交地址时将地址放入队列. 消费者线程依次从队列中取出地址进行下载保存.
    jamiesun
        10
    jamiesun  
       2012-07-17 23:26:10 +08:00
    单独启动一个守护进程轮训就可以了

    参考代码 http://www.talkincode.org/code/view/060bd1270e094713b390fd0bea8f19b5
    zzWinD
        11
    zzWinD  
    OP
       2012-07-18 10:04:28 +08:00
    @messense 没有接触过TaskQueue队列 找资料看看。

    @shellex 嗯,cron 可能不实时,也是一种解决方法。

    @arzon 正在看 生产者-消费者

    @jamiesun 需要翻墙么? 翻不翻都打不开。
    Archangel_SDY
        12
    Archangel_SDY  
       2012-07-18 11:51:26 +08:00
    做过一个类似的, 前台用js bookmarklet提交请求, 后台用celery处理下载, 队列用rabbitmq.
    webpy的话用在处理前台请求和管理页比较合适.
    lanbing
        13
    lanbing  
       2012-07-18 15:10:09 +08:00
    ilessd
        14
    ilessd  
       2012-07-18 15:14:11 +08:00
    ipconfiger
        15
    ipconfiger  
       2012-07-18 16:10:27 +08:00
    $sudo pip install celery

    一切没烦恼
    cyberscorpio
        16
    cyberscorpio  
       2012-07-18 20:40:48 +08:00
    一般来说,可能你得提交两个地址。除了图片的 URL 之外,还要 HTTP_REFERER,否则很多网站会返回 403...
    jamiesun
        17
    jamiesun  
       2012-07-19 22:17:19 +08:00
    shiweifu
        18
    shiweifu  
       2012-07-20 10:32:04 +08:00
    cronjob + Python + 一个kv(k是文件地址,v是保存的路径)
    bigzhu
        19
    bigzhu  
       2012-07-24 10:34:22 +08:00
    我做的 http://digzhu.com 其实有部分功能用到你说的这个.
    我这个站是用来推荐网站的. 输入 url,然后抓取站点截图.

    正好也是用 web.py 开发的. 确实得用另外的程序来抓.
    python 就判断下抓过没有,还有转换下图片大小等杂事.
    ivanlw
        20
    ivanlw  
       2012-09-22 18:47:47 +08:00
    @bigzhu 你这个好神奇啊……怎么输入URL自动抓的?用的啥……
    yuelang85
        21
    yuelang85  
       2012-09-22 18:52:26 +08:00
    跟 @judezhan 想法一样,觉得cron+shell就能搞定啊
    darklowly
        22
    darklowly  
       2012-09-22 19:56:06 +08:00
    直接创建一个后台线程就可以了。
    mckelvin
        23
    mckelvin  
       2012-09-22 20:04:12 +08:00
    如果LZ嫌cron麻烦的话可以tmux开一个panel直接写轮询呀
    clowwindy
        24
    clowwindy  
       2012-09-22 20:07:44 +08:00
    https://github.com/clowwindy/PyWebGet

    以前写的 Python 下载器,也用到了 web.py,供参考。
    xi4nyu
        25
    xi4nyu  
       2012-09-25 10:00:55 +08:00
    异步+队列.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5632 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 03:07 · PVG 11:07 · LAX 19:07 · JFK 22:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.