基于最小文件的工作流系统

file-workflow的Python项目详细描述


##简介

`workflow.py`是一个基于最少文件的工作流引擎。它作为后台进程运行,可以自动执行某些任务,如删除旧文件、在创建新文件时向您发送电子邮件或运行脚本来处理新文件。

在满足以下条件的情况下,允许进行修改或不进行修改:

-源代码的重新分发必须保留上述版权声明、本条件列表和以下免责声明。
-二进制形式的重新分发必须复制上述版权声明、本条件列表和以下内容在分发时提供的文档和/或其他材料中声明免责声明。
-未经事先书面许可,任何组织的名称或其贡献者的名称都不得用于认可或推广从本软件衍生的产品。

RS和贡献者"按原样"和
任何明示或默示保证,包括但不限于对适销性和特定用途适用性的默示
保证,均不承担任何责任。在任何情况下,版权持有人均不对任何直接、间接、附带、特殊、惩戒性或后果性损害(包括但不限于购买替代货物或服务;使用、数据或利润损失;或营业中断)承担责任,无论其是由何种原因造成的,也无论其是否在合同中因使用本软件而产生的任何行为、严格责任或侵权行为(包括疏忽或其他),即使已被告知可能造成此类损害。

flow options

-`-f<;path>;`要监视和处理的文件夹
-`-s<;seconds>;`检查新文件的时间间隔
-`-n<;name>;`当前文件名,默认为`$0`
-`-x<;path>;`要使用的配置文件(workflow.config)
-`-y<;path>;`要使用的缓存文件(workflow.cache.db)
-`-l<;path>;`输出日志文件(else控制台输出)
-`-d`对工作流过程进行监视
-`-c<;rulename>;`不启动工作流,而是清除规则(请参见下文)


\workflow.config`语法

`workflow.config`由一系列规则组成,这些规则的语法如下

rulename:pattern[dt]:command

,其中
-`rule name`是规则的名称(不能包含空格)。
-`pattern`是要监视的文件的全局模式。
-`dt`是时间间隔(默认为1秒)。只考虑最近修改过"dt"秒以上的文件。
-`command`是对每个与"pattern"匹配的文件执行的命令,这些文件是在"dt"秒以上创建的,但尚未处理的。如果命令以`&;结尾,则在后台执行,否则将阻塞工作流直到完成。匹配文件的名称可以用`$0`引用到命令中。多行命令可以用"\`"继续使用。


以""开头的行将被解释为注释并被忽略。



一小时后移到其他文件夹_txt:*.txt[1h]:mv$0 otherfolder/$0


<
<<<<<

<<<
python process.py$0

###为每个`*.src`文件创建一个有限状态机,为每个`*.src`文件创建一个有限状态机



rule1:*.src[1s]:echo>;$0.state.1
rule2:*.state 2.1[1s]:mv$0`expr"$0":`(.*).1`.2
rule3:*.state.2[1s]:mv$0`expr"$0":`(.*).2'`.3
rule4:*.state4:*.state.state.3[1s]:rm$0




当文件与模式匹配时,将创建一个新进程执行相应的命令。进程的pid保存在"<;filename>;<;rulename>;.pid"中。此文件将在进程完成时删除。如果进程失败,则输出日志和错误将保存在"<;filename>;<;rulename>;.err"中。如果进程没有失败,则输出将存储在"<;filename>;<;rulename>;.out"中。

如果已根据ceratin规则处理了文件,则此信息将存储在文件"workflow.cache.db"中,并且不会再次处理,除非:

-文件的时间更改(例如编辑或触摸文件)
-规则已清理。


python workflow.py-c rulename

在后一种情况下,当您重新启动"workflow.py"时,所有规则都将再次运行。

通过查找"<;filename>;<;rulename>;.pid"文件,可以找到要处理的文件和规则。如果重新启动"workflow.py",这些PID文件将被删除。

如果规则导致错误并创建了"<;filename>;<;rulename>;.err",则除非删除错误文件,否则不会根据规则再次处理该文件。

ut`将被覆盖。

可能是其他进程仍在写入文件,但在写入之间暂停的时间超过1秒(例如,文件是通过慢速连接下载的)。在这种情况下,最好使用不同于patterm使用的名称下载文件,并在文件写入完成后将文件重命名为正确的名称。这必须在工作流之外处理。工作流无法知道文件何时完成。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
安卓 java。lang.IllegalStateException游标   java同时缩放和旋转纹理变换矩阵   访问HSQLDB数据库时发生java NullPointerException   java Vert。x项目如何构建包含所有其他垂直项的jar   java通过JNI从小程序调用DLL   hadoop当metastore是mysql时,如何在java中使用jdbc执行hql   spring如何在java graphQl中设置http状态   swing如何让Java小程序显示卡图像?   java iText内存管理PdfReader/水印加载过多   java以实用方式或通过xml创建x个spring批处理作业   部署在信号量上运行java应用程序   在哪里可以找到Java中与Go的EncryptRSOAEP()功能等效的功能?   在Java公式中四舍五入到十是没有意义的   使用JVisualVM进行java JVM远程评测   java创建API jar就像Android使用存根方法一样?   java计算人口密度:初学者指南   socket在JAVA中将单线程服务器转换为多线程服务器   java如何在没有主键的情况下对表或视图进行hibernate映射