Skip to main content

data eval in future

Project description

secsay.com

The deva lib makes it easy to write streaming data process pipelines,event driven programing,and run async function.

An example of a streaming process and web view

streanming
# coding: utf-8
from deva.page import page, render_template
from deva import *

# 系统日志监控
s = from_textfile('/var/log/system.log')
s1 = s.sliding_window(5).map(concat('<br>'), name='system.log日志监控')
s.start()


# 实时股票数据

s2 = timer(func=lambda: NB('sample')['df'].sample(
    5).to_html(), start=True, name='实时股票数据', interval=1)

# 系统命令执行
command_s = Stream.from_process(['ping','baidu.com'])
s3 = command_s.sliding_window(5).map(concat('<br>'), name='系统持续命令ping baidu')
command_s.start()


s1.webview()
s2.webview()
s3.webview()

Deva.run()

Features

License

Copyright spark, 2018-2020.

Install

pip install deva

or

pip3 install deva

Sample

<b>如果是在jupyter里执行带码,代码尾部不需要添加Deva.run() </b>

bus

<b>如果使用bus跨进程,需要安装redis 5.0</b>

from deva import *

# 每隔一秒写入秒数到bus中
timer(start=True) >> bus
# 打印来自bus到数据
bus >> log
Deva.run()
from deva import *

# bus中的证书进行乘2后打印日志
bus.filter(lambda x: isinstance(x, int)).map(lambda x: x*2) >> log
# bus中来的原始数据全部打印报警
bus >> warn

Deva.run()

Crawler

from deva import *

h = http()
h.map(lambda r: (r.url, r.html.search('<title>{}</title>')[0])) >> log
'http://www.518.is' >> h


s = Stream()
s.rate_limit(1).http(workers=20).map(lambda r: (
    r.url, r.html.search('<title>{}</title>')[0])) >> warn
'http://www.518.is' >> s

Deva.run()

timer

from deva import timer, log, Deva, warn

# 默认每秒执行一次,返回当前秒
timer(start=True) >> log

# 3秒返回一个yahoo,随后启动,结果报警warn
s = timer(func=lambda: 'yahoo', interval=3)
s.start()

s >> warn
# 可用stop方法停止一个定时器
# s.stop()
Deva.run()


# python3 每隔n秒执行.py
# [2020-03-14 10:31:16.847544] INFO: log: 16
# WARNING:root:yahoo
# [2020-03-14 10:31:17.849576] INFO: log: 17
# [2020-03-14 10:31:18.853488] INFO: log: 18
# WARNING:root:yahoo
# [2020-03-14 10:31:19.855116] INFO: log: 19
# [2020-03-14 10:31:20.859602] INFO: log: 20
# [2020-03-14 10:31:21.865973] INFO: log: 21
# WARNING:root:yahoo
# [2020-03-14 10:31:22.868624] INFO: log: 22

scheduler

from deva import *

s = Stream.scheduler()

# 5秒执行一次的任务,返回yahoo到s中

s.add_job(func=lambda: 'yahoo', seconds=5)
# 5秒执行一次的任务,发送yamaha到bus,且返回yamaha到s中

s.add_job(func=lambda: 'yamaha' >> bus, seconds=5)

# 返回open到s中,每天执行一次,启动时间9点25
s.add_job(name='open', func=lambda: 'open', days=1, start_date='2019-04-03 09:25:00')

# 发送关闭到bus,返回值close放到s中,每天执行一次,15点30开始执行


def foo():
    '关闭' >> bus
    return 'close'


s.add_job(name='close', func=foo,
          days=1, start_date='2019-04-03 15:30:00')

# 打印所有任务
s.get_jobs() | pmap(lambda x: x.next_run_time) | ls | print

# 放入s中的所有数据都打印日志
s >> log

bus.map(lambda x: x*2) >> warn

Deva.run()


# $ python3 time_scheduler/scheduler.py

# [datetime.datetime(2020, 3, 14, 18, 6, 17, 830399, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>), datetime.datetime(2020, 3, 14, 18, 6, 17, 830947, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>), datetime.datetime(2020, 3, 15, 9, 25, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>), datetime.datetime(2020, 3, 15, 15, 30, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>)]
# [2020-03-14 10:06:17.835725] INFO: log: yahoo
# [2020-03-14 10:06:17.839594] INFO: log: yamaha
# WARNING:root:yamahayamaha
# [2020-03-14 10:06:22.846482] INFO: log: yahoo
# [2020-03-14 10:06:22.851722] INFO: log: yamaha
# WARNING:root:yamahayamaha
# [2020-03-14 10:06:27.840823] INFO: log: yaho

workers

from deva import bus, log, when, Deva

# 开盘任务
@bus.route(lambda x: x == 'open')
def onopen(x):
    'open' >> log

# 收盘任务
@bus.route(lambda x: x == 'close')
def onclose(x):
    'close' >> log

# 另外一种写法

when('open', source=bus).then(lambda: print(f'开盘啦'))
Deva.run()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

deva-1.3.1.tar.gz (119.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

deva-1.3.1-py3-none-any.whl (131.0 kB view details)

Uploaded Python 3

File details

Details for the file deva-1.3.1.tar.gz.

File metadata

  • Download URL: deva-1.3.1.tar.gz
  • Upload date:
  • Size: 119.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.1

File hashes

Hashes for deva-1.3.1.tar.gz
Algorithm Hash digest
SHA256 b73f6f8e33555f91d1447d26d51d530c4021b06e092fc0bc20c9f308455a49d9
MD5 b2184309db58e13a443c6f82b6d6d085
BLAKE2b-256 a85702ace2ebde3ef231425102dcfb55cdd67912867c61446fbdeed968a1ffd0

See more details on using hashes here.

File details

Details for the file deva-1.3.1-py3-none-any.whl.

File metadata

  • Download URL: deva-1.3.1-py3-none-any.whl
  • Upload date:
  • Size: 131.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.1

File hashes

Hashes for deva-1.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ae56469b36319c15712a8d34d3c5ba23fc5ccf4c2f202c09f51fe74a7d90b79f
MD5 aee70fceb8961c03063dfd1b000e61d1
BLAKE2b-256 5c8033efe73f55c15b8fc3017c8912d20b78ab7a457fe92255df64ec68e7f008

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page