V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
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
scriptkid
V2EX  ›  Python

Python web 的一个问题,描述较长,具体看正文

  •  
  •   scriptkid · Feb 21, 2017 · 3275 views
    This topic created in 3365 days ago, the information mentioned may be changed or developed.

    问:假设用 python 写了个端口扫描功能,基于 web 界面,端口扫描需要耗费一定时间,
    怎么做才能实现用户输入指定 IP 提交任务,然后可以随意切换页面,后台进行扫描功能,
    过一段时间后再切到结果页面直接查看扫描结果,扫描功能是直接写在 web 代码还是要另起一个独立脚本?

    Supplement 1  ·  Feb 21, 2017
    感谢各位 V 友,大概有思路了,容我再折腾折腾
    13 replies    2017-02-22 16:21:46 +08:00
    Yourdaye
        1
    Yourdaye  
       Feb 21, 2017
    正文太长,下一题
    qsnow6
        2
    qsnow6  
       Feb 21, 2017
    webui 和扫描脚本都单独用一个进程
    holajamc
        3
    holajamc  
       Feb 21, 2017
    gamexg
        4
    gamexg  
       Feb 21, 2017
    另起一个独立脚本。

    >过一段时间后再切到结果页面直接查看扫描结果
    新任务生成一个 id , session 记录这个 id ,然后访问结果页面时根据 id 查询,放 sql 还是 kv 就随意了。
    yangtukun1412
        5
    yangtukun1412  
       Feb 21, 2017
    JasperYanky
        6
    JasperYanky  
       Feb 21, 2017
    Celery
    zhchbin
        7
    zhchbin  
       Feb 21, 2017
    有一个更简单的推荐: http://python-rq.org/, Github 地址: https://github.com/nvie/rq

    只需要 Redis 就可以了,简单易用。
    xrlin
        8
    xrlin  
       Feb 21, 2017
    这种情况一般用任务队列。
    SP00F
        9
    SP00F  
       Feb 21, 2017
    #6 漏正解, Celery 异步处理。
    TKKONE
        10
    TKKONE  
    PRO
       Feb 21, 2017
    简单一点,后台另起脚本运行任务,最后的结果输出到一个结果页面,那样就随便切换了
    Kilerd
        11
    Kilerd  
       Feb 21, 2017
    任务队列
    ansheng
        12
    ansheng  
       Feb 21, 2017
    Celery 异步调用。
    SlipStupig
        13
    SlipStupig  
       Feb 22, 2017
    一点不影响啊,一个任务对应一个线程,把一个任务对应一个任务 ID ,线程把进度保持到数据库里面就行( mysql sqlite mongodb redis 等等都可以),前端读数据库就可以了,一点也不复杂
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2855 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 10:52 · PVG 18:52 · LAX 03:52 · JFK 06:52
    ♥ Do have faith in what you're doing.