rpyc 文件监控

环境:

    python2.7

    rpyc 3.4.2

官网demo,文件监控

#!/usr/bin/env python
# coding:utf-8
# server.py
import rpyc
import os
import time
from threading import Thread

class FileMonitorService(rpyc.SlaveService):
    class exposed_FileMonitor(object):
        def __init__(self, filename, callback, interval=1):
            self.filename = filename
            self.interval = interval
            self.last_stat = None
            self.callback = rpyc.async(callback)
            self.active = True
            self.thread = Thread(target=self.work)
            self.thread.start()
            
        def exposed_stop(self):
            self.active = False
            self.thread.join()
            
        def work(self):
            while self.active:
                stat = os.stat(self.filename)
                if self.last_stat is not None and self.last_stat != stat:
                    self.callback(self.last_stat, stat)
                self.last_stat = stat
                time.sleep(self.interval)
if __name__ == "__main__":
    from rpyc.utils.server import ThreadedServer
    ThreadedServer(FileMonitorService, port=18871).start()
#!/usr/bin/env python
# coding: utf-8

#client.py
import rpyc

f = open("/tmp/floop.bloop", 'w')
conn = rpyc.connect("localhost", 18871, service=rpyc.SlaveService)
bg = rpyc.BgServingThread(conn)
def on_file_changed(oldstat, newstat):
    print("file changed")
    print("    old stat: %s" %(oldstat,))
    print("    new stat: %s" %(newstat,))
mon = conn.root.FileMonitor("/tmp/floop.bloop", on_file_changed)
f.write("shmoop")
f.flush()

#wait for server callback, flask tornado django ---run_forever
import time
time.sleep(5)

 

转载于:https://www.cnblogs.com/jachin/p/7368091.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值