问:假设用 python 写了个端口扫描功能,基于 web 界面,端口扫描需要耗费一定时间,
怎么做才能实现用户输入指定 IP 提交任务,然后可以随意切换页面,后台进行扫描功能,
过一段时间后再切到结果页面直接查看扫描结果,扫描功能是直接写在 web 代码还是要另起一个独立脚本?
1 Yourdaye 2017-02-21 16:50:31 +08:00 正文太长,下一题 |
![]() | 2 qsnow6 2017-02-21 16:56:12 +08:00 webui 和扫描脚本都单独用一个进程 |
![]() | 3 holajamc 2017-02-21 16:56:41 +08:00 |
![]() | 4 gamexg 2017-02-21 17:23:18 +08:00 另起一个独立脚本。 >过一段时间后再切到结果页面直接查看扫描结果 新任务生成一个 id , session 记录这个 id ,然后访问结果页面时根据 id 查询,放 sql 还是 kv 就随意了。 |
5 yangtukun1412 2017-02-21 17:33:03 +08:00 |
6 JasperYanky 2017-02-21 17:37:47 +08:00 Celery |
![]() | 7 zhchbin 2017-02-21 17:48:45 +08:00 |
![]() | 8 xrlin 2017-02-21 18:00:32 +08:00 这种情况一般用任务队列。 |
9 SP00F 2017-02-21 18:01:31 +08:00 #6 漏正解, Celery 异步处理。 |
![]() | 10 asd103 2017-02-21 18:12:03 +08:00 简单一点,后台另起脚本运行任务,最后的结果输出到一个结果页面,那样就随便切换了 |
![]() | 11 Kilerd 2017-02-21 18:19:35 +08:00 任务队列 |
12 ansheng 2017-02-21 18:43:36 +08:00 Celery 异步调用。 |
![]() | 13 SlipStupig 2017-02-22 16:21:46 +08:00 一点不影响啊,一个任务对应一个线程,把一个任务对应一个任务 ID ,线程把进度保持到数据库里面就行( mysql sqlite mongodb redis 等等都可以),前端读数据库就可以了,一点也不复杂 |