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

现在我遇到这样一个问题,希望各位大佬看看有什么好的解决方案没有?

  •  
  •   longmeier90 · 2021-03-17 10:51:07 +08:00 · 2705 次点击
    这是一个创建于 1107 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在我的公司有几家诊所,每家诊所有几台检查设备。检查设备有一部分是相同,有一小部分是独有的。
    每台检查设备输出来的文件上传到我们系统内。文件名需要带一个 ID 号,这个 ID 号是需要人员专门点保存的时候手动输入的,并且需要保存到指定的目录下面。
       目前诊所的文件上传流程:
       1.文件保存到每家诊所的前台电脑上;
       2.前台电脑上安装一个 seafile 客户端,去检查目录下面新产生的文件,并把新产生的文件同步到服务器指定的目录下面。
       3.服务器写了一个 python 程序监控这几个文件,一产生新的文件就会把文件放到 MQ 队列里面,另外一个 python 去消耗 MQ 队列,去解析文件里面的内容上传到服务器。
       现在最大的问题是,诊所人员抱怨文件经常上传不上去,不愿意用。宁愿手动输入检查结果也不愿意按照规定输入 ID 号把文件保存到指定的目录下面。这里我要说明一下的是文件经常上传不上去的原因有:网线断啦、seafile 客户端未启动、输入 ID 号规则错误、seafile 同步文件路径错误,每家诊所有每诊所的问题。
       
       看看各位大神有没有好的改进建议,指导一下,或者是优化一下流程
    
    第 1 条附言  ·  2021-03-17 14:30:23 +08:00
    ID 号其实就是客户的每次的挂号 ID, 每次挂号做的检查文件,要放到对应的挂号结果里面。每个设备输出的文件都不带挂号 ID 。
    13 条回复    2021-03-18 13:54:53 +08:00
    lusi1990
        1
    lusi1990  
       2021-03-17 11:25:04 +08:00
    ID 系统分配吧,人输入确实烦
    断线重传
    tux
        2
    tux  
       2021-03-17 11:32:00 +08:00
    用这个 开源免费软件 FreeFileSync
    自动同步本地指定目录到目标远程目录,支持远程 sftp,ftp

    而且不要让诊所人手动输入,给不同诊所分配不同的 ftp 目录就行了
    比如 A 诊所的同步远程目录是 A_ID_XX123456
    剩下的在服务器上脚本搞定
    crazytudou
        3
    crazytudou  
       2021-03-17 12:25:02 +08:00
    流程没错,但细节有问题,ID 可以按规则自动生成的,客户端设置为随机启动,路径要检测并有自动创建功能,要有断线重连,自动继传功能
    renmu123
        4
    renmu123  
       2021-03-17 12:46:11 +08:00 via Android
    1.每个诊所放个专门的机子
    2.将所有的文件上传到这个机子
    3.然后做个管理系统,来对文件进行管理。

    这样之后业务拓展会比较方便
    也容易展示各种错误
    减少了操作步骤

    缺点就是增加了开发成本
    ch2
        5
    ch2  
       2021-03-17 12:49:36 +08:00
    为什么不做个网页后台专门上传文件
    longmeier90
        6
    longmeier90  
    OP
       2021-03-17 14:42:36 +08:00
    @lusi1990 ID 是系统的挂号 ID
    bnx
        7
    bnx  
       2021-03-17 15:05:41 +08:00
    1. 总部买个 Asus 路由器,配置 DDNS,设置\/PN 服务器
    2. 总部配置一台文件服务器,并设置好对应的权限
    2. 分支机构的特定机器连接到\/PN 服务器
    3. 映射一个盘符到总部文件服务器
    4. 软件生成的报告直接存到映射的本地盘符

    (这样根本不需要考虑软件错误之类的,保证\/PN 通信正常即可)
    real3cho
        8
    real3cho  
       2021-03-17 15:10:34 +08:00
    做一个前置程序或许会好一些?
    一个文本框输入 ID 一个文件框选择文件 一个按钮做存放操作
    然后在点击按钮时去检查产生的这些错误 如果都通过就放到指定目录或者直接上传到服务器的目录(直接上传可以跳过 seafile 客户端这一步)
    网线断啦 - ping 服务器 如果 ping 不通提示网络异常
    seafile 客户端未启动 - 一般设置开机启动可解 当然保险起见的话可以在操作按钮判断是否有客户端的进程或者服务是否启动 然后可以做提示或者直接通过进程去启动客户端
    seafile 同步文件路径错误 - 这个不是很理解 一般来说初次配置错误导致上传问题的话 后期设置好了不应该会是经常出问题的点
    输入 ID 号规则错误 - 检查规则(甚至可以匹配数据库中的数据,检查是否存在或者是否做过检查之类之类的)
    models
        9
    models  
       2021-03-17 15:11:39 +08:00
    步骤 1 里的电脑安装 nxlog 试试?然后通过 syslog 之类的方式传出去
    james2013
        10
    james2013  
       2021-03-17 16:48:42 +08:00
    程序太复杂了,第一次使用固定诊所 id,以后用户只需要输入挂号 id,点击确定就好了.
    其它的应该由程序自动在后台处理,使用 seafile 不方便,可以考虑将 Python 程序安装在电脑上,每分钟检测固定目录是否有新文件等操作.
    teddy2725
        11
    teddy2725  
       2021-03-17 16:58:08 +08:00
    做个 web 系统,登录进去各自的诊所账号上传检查文件,输入挂号编号,直接提交到后台,网线会断的化就弄个无线网吧.
    saulshao
        12
    saulshao  
       2021-03-17 18:13:56 +08:00
    1. 这,用一个可编程的工具,例如 python 作为客户端,在客户端部署一个 sqllite 数据库,这个数据库啥都不干,就记录本地文件的路径和这个路径的文件传了没。
    2. python 程序每隔一段时间扫描本地文件夹,遇到没传的文件就通过 ftp/http/共享文件夹 /随便啥方式上传到服务器上。传完更新本地数据库,将传了没标记为传了。然后根据最近的一个时间戳扫描文件的更新 /创建时间。
    3.服务器端接收文件的时候自动给文件编号,自动命名,记录是哪个客户端上传的。
    4.其他的文件路径定义,更新 /删除规则,文件命名规则等等,请自行考虑。
    DaguguJ
        13
    DaguguJ  
       2021-03-18 13:54:53 +08:00
    挂号 id 的输入问题,ID 的输入可以用自动识别;
    文件保存到指定目录问题,既然有办法获取到指定的目录,那就用 os 模块移动文件。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1246 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 17:58 · PVG 01:58 · LAX 10:58 · JFK 13:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.