百
e
购开发日记(三)
批量处理(
JOB
)
系统中很多操作可能很费时,实时的处理势必影响系统的体验性。比如一个耗时的验证,或者需要其他系统协同的操作,
J2EE
平台下我们有可以依赖
JMS
简单把请求塞到一个
Topic/Queue
中,由监听者再慢慢的处理消化。当然
JMS
是复杂的,有的系统的实时性要求可能不那么很高,
他可能通过每过几个小时或者几十分钟
FTP
一个文件过来,实现系统间的异步协调。
下面就拿百
e
购里需要异步批量处理的几个
JOB
为例来简单说明一下。好友间的操作信息分享,或者被关注事物的变动通知,都是比较耗时的操作。那么当一个好友发生一个可以共享的操作,比如和另外一个人成为了好友。这个操作不会被马上发送到他
/
她的其他好友那里去。会有一个后台的进程每过
10
分钟或不等把还没有发送的操作一个个发送给他
/
她的好友。
OK,
基本的思想就是这个样子,往往一个系统的实时性不是想象的那么苛刻,有的时候往往费力不讨好。退一步海阔天空,简单易用的思想和方法才是王道。
批量处理的部署,
有成熟的自动部署工具
Unicenter
Autosys Job Management
他有自己的一套叫
JIL
(
Job Information Language
)语言
,
具体的语法例子可以参考:
Autosys
- A Job Scheduling tool
:
/* ----------------- SAP_UAT_MU03_C ----------------- */
insert_job: SAP_UAT_MU03_C job_type: c
command: /local/SAP/processCheckUAT.sh
machine: MU03-UAT
owner: admin@MU03-UAT
permission: gx,wx,mx,me
days_of_week: all
start_times: "15:00, 14:00"
description: "Job used for Run testing of process"
alarm_if_fail: 1
max_exit_success: 1
语法很简答,
很容易看懂,这个玩意有点小
Bug,
有的时候很让你抓狂。
但是一般我们虚拟机提供商可能没有这个玩意,
我们只好自己动手了用
crontab,
希望你的虚拟机提供商给你开通了此权限。
Crontab
使用
cron expression
具体自己上网产看看就知道了。
*/21 * * * * cd /{{MY_PROEJCT_HOME}};python job_email.py
上面的语法意思就是每过
21
分钟执行一个我工程目录下的
python
程序
job_email.py
把你需要的
JOB
定义到一个文件中
crontab
{{JOB_FILE}}
;运行后使用
crontab –l
查看是否部署正确。
Django
环境下如果你的独立运行的
JOB
没有涉及工程里面的
Model
的话,不需要预先运行
settings.py
,一旦你需要链接数据库查询的话,需要预先运行
settings.py
或者直接从
django-admin.py
命令进入,
但是这个总是觉得让人有的约束,其实
django-admin.py
无非就是帮你初始化你的
settings.py
设置,
查看看后,我们自己也可以在我们的入口程序内修改:
#!/usr/bin/python
#-*-coding:UTF-8-*-#
import os, sys
sys.stdout = sys.stderr
sys.path.append('/{{PROJECT_PARENT}}')
sys.path.append('/{{PROJECT_HOME}}')
os.environ['DJANGO_SETTINGS_MODULE'] = '{{PROJECT_NAME}}.settings'
from django.core.management import setup_environ
import logging
logger = logging.getLogger('job')
try:
import settings # Assumed to be in the same directory.
except ImportError:
import sys
logger.error("Bla bla....")
sys.exit(1)
if __name__ == "__main__":
setup_environ(settings)
logger.warning('Preparing to send out the email..')
logger.warning("-" * 72)
# Do the setting job----------------------
logger.warning("-" * 72)
这样后我们独立运行的时候就不需要在走
django-admin.py
过一下了。
下一讲,将是系统的静态资源的处理,特别是和
Django
相联系比较紧密的部分。还有部分在
Django
下如何处理图像资源。
分享到:
相关推荐
高效e人是由重庆易飞科技有限公司(简称“易飞科技”)开发的一款功能强大、操作简单、受用户欢迎的办公自动化(OA)软件。高效e人分个人版、企业版和免费版,集通讯录、日程安排、任务计划、事务提醒、万年历、日记...
如是之前平台老用户则不需要重复申请账号,并且打通之前的Android,IOS,等平台数据,本示例整合了常用的功能,开发请按照以下步骤操作。将sdk引入到微信小程序中将utils目录下bmob.js,underscore.js复制至项目中...
开心网的系统架构由基础工具、社交游戏和其他应用三大模块构成。具体功能如照片管理、日志管理、转帖、社交游戏等。系统中,用户和管理员有不同权限,如管理员具有内容审核和用户管理权限。 3. **用例图** 用例...
行业主要由国际知名品牌如Chanel、Dior、MAC和Estée Lauder主导,但国内品牌如完美日记、花西子等新兴品牌亦在市场中崭露头角,通过线上渠道和社交媒体营销快速获得市场份额。 2023年,彩妆市场的消费群体不再局限...
myBase 是一款用于分类管理自由格式资料的数据库软件,对个人用户在微软视窗( Windows )桌面上 实现文档、知识、笔记、日记、图片和网页的分类管理任务相当有帮助。 myBase 7.x 内容格式已由 RTF 升级为 HTML 格式...