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
cevincheung
V2EX  ›  Python

python 能不能干这种工作

  •  
  •   cevincheung ·
    cevin · 2014-03-25 14:45:08 +08:00 · 5412 次点击
    这是一个创建于 3896 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一个http请求队列。写个daemon。 一个http rest的api调用。

    push一个url进去。 push-> url,callbackurl,post|get,postdata(optional),timeout(optional)
    然后执行完毕后回调callbackurl(一般是在同一台服务器或内网服务器)

    然后队列数量可能会有点大。N台服务器跑这个脚本。服务端随机把队列请求push到这些服务器上。


    或者把队列内容push到redis里。N台服务器上的脚本不停的拿redis(用redis做m/s好做容灾)

    python干这个能扛得住咩?



    ---
    或者现在有木有类似的已经成型的产品能用的@.@
    第 1 条附言  ·  2014-03-25 15:45:22 +08:00
    补充一下,是这样的。



    比如:
    post http://127.0.0.1:py_port/create
    url=http(s)://www.domain.com
    method=post
    timeout=30s
    postdata=xxxxx
    callbackurl=http://127.0.0.1:internal_system_port/some_id

    python收到,入队列,python请求上面传递的url,根据method选择get还是post请求。然后把该服务器的输出post到callbackurl。

    或者
    redis.add:
    {url:http, method:post, timeout:30, postdata:[], callbackurl=http }
    python去读redis。
    25 条回复    1970-01-01 08:00:00 +08:00
    towser
        1
    towser  
       2014-03-25 14:54:33 +08:00
    有点像消息队列异步调用
    lch21
        2
    lch21  
       2014-03-25 15:01:14 +08:00
    httpsqs 似乎能干这个
    lch21
        3
    lch21  
       2014-03-25 15:01:47 +08:00
    httpsqs 有各种语言的客户端
    xiaozi
        4
    xiaozi  
       2014-03-25 15:10:28 +08:00
    beanstalkd
    gotounix
        5
    gotounix  
       2014-03-25 15:11:55 +08:00
    celery?
    ygmpkk
        6
    ygmpkk  
       2014-03-25 15:18:00 +08:00
    @gotounix celery +1 这个情况就使用这工具来完成。
    cevincheung
        7
    cevincheung  
    OP
       2014-03-25 15:38:15 +08:00
    @lch21 要的是一个队列+执行器(暂时这么叫他吧)。sqs只是一个队列存储,并没有“执行者”
    cevincheung
        8
    cevincheung  
    OP
       2014-03-25 15:45:33 +08:00
    @gotounix
    @ygmpkk
    已补充
    gotounix
        9
    gotounix  
       2014-03-25 15:56:47 +08:00
    @cevincheung celery+redis
    cevincheung
        10
    cevincheung  
    OP
       2014-03-25 16:16:05 +08:00
    @gotounix 就是说python是ok的,能扛得住?
    gotounix
        11
    gotounix  
       2014-03-25 16:32:57 +08:00
    @cevincheung 能不能扛住,不知道!但是,提供了可以实现你需求的方法,你可以自己尝试、测试。除了你自己,没有人能帮你测试,大家的业务需求都不一样,应用环境也不一样,不能一概而论,下结论。
    mantianyu
        12
    mantianyu  
       2014-03-25 16:47:53 +08:00
    这种功能大部分语言都能实现啊
    mantianyu
        13
    mantianyu  
       2014-03-25 16:48:12 +08:00
    @mantianyu 当然, 包括python
    jyz19880823
        14
    jyz19880823  
       2014-03-25 16:56:53 +08:00
    功能不难啊,不过要是数据量大的话,还是用静态语言吧,试试go
    lch21
        15
    lch21  
       2014-03-25 17:22:44 +08:00
    python 的优势在于编程效率高
    至于能不能扛得住,就要根据软硬件环境测试了
    我个人感觉没什么问题
    可以先做个模型测试,实在不行再改静态语言
    NCE
        16
    NCE  
       2014-03-25 17:59:29 +08:00
    这和python有关系么?用php也可以。
    NCE
        17
    NCE  
       2014-03-25 18:00:09 +08:00
    谈性能之前,先给个范围,N多服务器,请求数量有点大,先量化一下,同时请求数,再说吞吐量。
    cevincheung
        18
    cevincheung  
    OP
       2014-03-25 19:47:19 +08:00   ❤️ 1
    @NCE 不需要多高的性能。只要能保证daemon不死就行- -#
    NCE
        19
    NCE  
       2014-03-25 19:49:46 +08:00
    没问题的,这才到哪啊
    lookhi
        20
    lookhi  
       2014-03-25 20:01:36 +08:00 via Android
    可以 我们队列就是py做的
    里面有大约1000多万的任务在 普通请求也没问题。
    janxin
        21
    janxin  
       2014-03-25 21:13:00 +08:00 via iPad
    celery
    janxin
        22
    janxin  
       2014-03-25 21:13:43 +08:00 via iPad
    +supervisor
    cevincheung
        23
    cevincheung  
    OP
       2014-03-25 21:31:28 +08:00
    @lookhi 你们怎么做的
    lookhi
        24
    lookhi  
       2014-03-25 21:55:13 +08:00
    @cevincheung 基于tornado的 tornado做一个Server很方便的.
    guotie
        25
    guotie  
       2014-03-26 10:33:57 +08:00
    nsq
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1891 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 00:02 · PVG 08:02 · LAX 16:02 · JFK 19:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.