python twisted启动定时服务
以下是python脚本send_mms.py
############################################
#!/usr/bin/python
# -*- coding: utf-8 -*-
from twisted.application import service
from twisted.internet import reactor
def main(counter=0):
print counter, '...'
if counter == 10:
reactor.stop()
else:
reactor.callLater(60, main, counter+1) # 1分钟执行一次
if __name__ == "__main__":
reactor.callLater(1, main)
print 'Start!'
reactor.run()
print 'Stop!'
elif __name__=='__builtin__':
print '__builtin__'
reactor.callLater(1, main)
application=service.Application('send_mms')
############################################
shell 启动服务脚本send_mms.sh
############################################
#! /usr/bin/env sh
MAIN_MODULE=loop_mms
case $1 in
start)
PYTHONPATH=.:$PYTHONPATH twistd --python=$MAIN_MODULE.py --pidfile=/var/run/$MAIN_MODULE.pid --logfile=log/$MAIN_MODULE_client.log
;;
stop)
kill -9 `cat /var/run/$MAIN_MODULE.pid`
;;
restart)
kill -9 `cat /var/run/$MAIN_MODULE.pid`
sleep 1
PYTHONPATH=.:$PYTHONPATH twistd --python=$MAIN_MODULE.py --pidfile=/var/run/$MAIN_MODULE.pid --logfile=log/$MAIN_MODULE_client.log
;;
log)
tail -f log/$MAIN_MODULE_client.log
;;
*)
echo "Usage: ./$MAIN_MODULE.py start | stop | restart | log"
;;
esac
############################################
现在测试另一种情况,既然twisted 以callback的方法来执行我们的方法,你会想如果一个callback抛出了异常怎么办.让我们试试吧,basic-twisted/exception.py会在一个callback中抛出一个异常:
def falldown():
raise Exception('I fall down.')
def upagain():
print 'But I get up again.'
reactor.stop()
from twisted.internet import reactor
reactor.callWhenRunning(falldown)
reactor.callWhenRunning(upagain)
print 'Starting the reactor.'
reactor.run()
你会看到以下输出:
Starting the reactor.
Traceback (most recent call last):
... # I removed most of the traceback
exceptions.Exception: I fall down.
But I get up again.
注意第二个callback仍会在第一个callback之后运行,即使我们看到了很多的异常的追踪信息.如果你把reactor.stop()注释掉的话,这个程序会仍会继续运行下去,所以reactor 会继续运行下去即使我们的一个callback抛出了异常。
文章部分内容参考:http://floss.zoomquiet.io/data/20110709133658/index.html
python twisted启动定时服务的更多相关文章
- python twisted 的定时调用带参的函数
无参情况:lc = task.LoopingCall(fun)如果fun带有参数,可以使用functools.partial传递 (fun2 = partial(fun, param1,[...]) ...
- Python循环定时服务功能(相似contrab)
Python实现的循环定时服务功能.类似于Linux下的contrab功能.主要通过定时器实现. 注:Python中的threading.timer是基于线程实现的.每次定时事件产生时.回调完响应函数 ...
- Python 启动本地服务
在 Linux 服务器上或安装了 Python 的机器上,Python自带了一个WEB服务器 SimpleHTTPServer,我们可以很简单的使用 python -m SimpleHTTPServ ...
- Python——Window启动服务
一.新建启动服务程序 # ZPF # encoding=utf-8 import win32timezone from logging.handlers import TimedRotatingFil ...
- 【OF框架】使用OF.WinService项目,添加定时服务,进行创建启动停止删除服务操作
准备 使用框架搭建完成项目,包含OF.WinService项目. 了解Window Service 和定时服务相关知识. 一.添加一个定时服务 第一步:了解项目结构 第二步:创建一个新的Job 第三步 ...
- 【转】Python Twisted介绍
Python Twisted介绍 作者:Jessica McKellar 原文链接 Twisted是用Python实现的基于事件驱动的网络引擎框架.Twisted诞生于2000年初,在当时的网络游戏开 ...
- python实现编写windows服务
使用python编写windows服务 最近测试服务器上经常发生磁盘空间不足,每次手动清除比较麻烦,所以写个windows服务定时清理下.中间也遇到过几个坑,一起记录下来. 1.python实现win ...
- Python Twisted系列教程16:Twisted 进程守护
作者:dave@http://krondo.com/twisted-daemonologie/ 译者: Cheng Luo 你可以从”第一部分 Twist理论基础“开始阅读:也可以从”Twisted ...
- 启动Mysql服务提示Can’t connect to local MySQL server through socket的解决方法
启动Mysql服务常会提示下面错误: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/ ...
随机推荐
- C++C++中构造函数与析构函数的调用顺序
http://blog.csdn.net/xw13106209/article/details/6899370 1.参考文献 参考1: C++继承中构造函数.析构函数调用顺序及虚函数的动态绑定 参考2 ...
- 昨天用的流量有点多60M
就是因为值班这里没有无线,然后自己又是受前几次的影响,没有收到微信,然后就看了热点,这是用的快的.
- Linux常用命令_(文件查看)
文件查看主要有以下命令 cat.tac.more.less.head.tail.nl cat命令:是一个文本文件查看和连接工具.从第一个字节开始正向查看文件的内容,适用于小文件 以第一行开始,显示没有 ...
- JVM的GC实现详解
新生代中的98%对象都是“朝生夕死”的,所以并不需要按照1:1的比例来划分内存空间,而是将内存分为一块比较大的Eden空间和两块较小的Survivor空间,每次使用Eden和其中一块Survivor. ...
- HTML-Canvas03
颜色合成 globalCompositeOperation 属性: //先绘制一个图形. ctx.fillStyle = "#00ff00"; ctx.fillRect(10,10 ...
- C#可以做什么
C#可以做什么 学以致用.这也是大家学习C#的目标.当我们充分了解C#广阔的应用,才会激发我们最大的学习热情.下面将介绍一下C#的常见应用场景本文选自明明白白学C#大学霸. 0.2.1 开发普通软件 ...
- Android渗透测试Android渗透测试入门教程大学霸
Android渗透测试Android渗透测试入门教程大学霸 第1章 Android渗透测试 Android是一种基于Linux的自由及开放源代码的操作系统,主要用于移动设备,如智能手机.平板等.目前 ...
- 多功能扫描打印读卡一体手持POS终端
以往便利店或者超市,前台那个笨重的POS机和站在POS机后的收银员.传统的零售店中,笨重的POS机随处可见. 一个顾客要结账,就需要通过POS机.小票打印机.刷卡器等的配合才能实现.店面需要盘点,整理 ...
- BZOJ1099 : [POI2007]树Drz
首先1与i交换,n与i交换,i与i+1交换的可以$O(n)$算出. 然后只需要考虑i与x交换(1<i,x<n且|i-x|>1). 设 a[i]=h[i-1] b[i]=h[i+1] ...
- 通过网页的JS代码启动移动APP
<span style="font-size:18px;"><script> function startAPP(){ window.location = ...