一个不到 100 行的 Python crontab 实现;

2017-04-01 15:42:20 +08:00
 intohole

https://github.com/intohole/pyct

主要是大家可以看看思路,我写这个用了很短时间,如果有什么需求可以提给我

3355 次点击
所在节点    Python
14 条回复
fengfisher2
2017-04-01 17:25:17 +08:00
不知道。
ryd994
2017-04-01 17:25:23 +08:00
很多地方不太 Pythonic 啊
if is True:
https://github.com/intohole/pyct/blob/master/pyct/pyct.py#L81 这是 typo 吧
各种长段的 elif 可以用 dict 代替
condition_type 和 time_range , 这明明是个 enum ,为什么枚举用字符串做?

你是其他语言转 Python 的吧?不光要学会用 Python 写出能跑的程序,还要学着 Pythonic 起来
mooncakejs
2017-04-01 17:45:29 +08:00
仅对楼上, pythonic 是指把 python 语法糖玩的很溜?
@ryd994
ryd994
2017-04-01 18:05:15 +08:00
@mooncakejs
1. 至少可以减少低级 typo
2. enum 用字符串和用 dict 是 O(n)和 O(logn)的区别
3. enum 也算语法糖? C 里就有的 enum switch 叫语法糖?你可以找找 Abusing the C switch statement
ryd994
2017-04-01 18:12:22 +08:00
最后, gmtime 是 UTC , cron 应该是跟随系统时区
ryd994
2017-04-01 18:13:25 +08:00
@Livid Duplicate with /t/352016
Allianzcortex
2017-04-02 08:51:50 +08:00
CTItem 的 __equal__ 函数实现的有问题啊
jyf
2017-04-02 12:54:32 +08:00
建议改用 multiprocessing
intohole
2017-04-09 22:19:16 +08:00
@ryd994 嗯 我工作的时候用 java , 也写 js , shell , c , c++ 我觉得抠语言没意思 , 写东西 写的是思想,我们不是文豪 东西写出来 , 有用 , 能让人看懂就好
intohole
2017-04-09 22:19:29 +08:00
@ryd994 谢谢你的指点
intohole
2017-04-09 22:20:18 +08:00
@jyf 谢谢
intohole
2017-04-09 22:20:32 +08:00
@Allianzcortex 请指教
Allianzcortex
2017-04-12 23:43:23 +08:00
@intohole 啊啊啊,刚刚看见。我说一下我的感觉哈:

```
def __eq__(self , obj):
if isinstance(obj , int):
for condition in self.conditions:
if condition.judge(obj) is True:
return True
return False
```
对应的逻辑是这个意思?:

```
def __eq__(self , obj):
if isinstance(obj , int):
for condition in self.conditions:
if condition.judge(obj) is False:
return False
return True
```
intohole
2017-04-14 10:19:45 +08:00
@Allianzcortex 我看下 谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/351998

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX