`
thirdson
  • 浏览: 4947 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

百e购开发日记(三)

阅读更多

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 下如何处理图像资源。

0
1
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2

    SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2SAP 开发日记2

    NC开发日记(2010)

    这是我的原创资源,是我三年的NC开发的心得,

    MOSS 2007开发日记

    以下是对"MOSS 2007开发日记"中可能涉及的关键知识点的详细解释: 1. **SharePoint架构**:理解MOSS 2007的基础架构至关重要,包括前端Web服务器、应用服务器、数据库服务器和客户端组件。这些组件如何协同工作对于...

    SAP 开发日记 SAP 开发日记SAP 开发日记

    SAP 日记SAP 日记SAP 日记SAP 日记SAP 日记SAP 日记SAP 日记SAP 日记SAP 日记SAP 日记SAP 日记

    前端开发-日记.rar

    前端开发-日记.rar前端开发-日记.rar前端开发-日记.rar前端开发-日记.rar前端开发-日记.rar前端开发-日记.rar前端开发-日记.rar前端开发-日记.rar前端开发-日记.rar前端开发-日记.rar前端开发-日记.rar前端开发-日记...

    深入体验Java+Web项目开发(开发日记)2

    本开发日记将分为几个部分,逐一解析这些技术要点。 首先,Java作为后端开发的主要语言,其面向对象的特性使得它在处理复杂业务逻辑时具有优势。理解Java的基础语法、类与对象、接口、继承和多态性是必不可少的。...

    windows mobile 开发日记+视频

    本资料“Windows Mobile 开发日记+视频”将引领你深入理解Windows Mobile的开发流程。通过开发日记,你可以了解到以下关键知识点: 1. **环境搭建**:首先,你需要安装Visual Studio,选择支持Windows Mobile开发的...

    网站开发日记(11)

    博文链接:https://dodomail.iteye.com/blog/245758

    深入体验Java+Web项目开发(开发日记)1

    深入体验Java+Web项目开发(开发日记)的源码和第一,二章内容和课件!

    一个嵌入式工程师的stm32开发日记

    嵌入式工程师是指那些专注于在特定硬件平台上进行软件开发和系统集成的专业人员。...作者通过这份开发日记,不仅记录了自己在STM32开发上的点点滴滴,也为其他同行或爱好者提供了一条学习和思考的路径。

    Android代码-移动日记本功能包含传统的日记本和音频日记视频日记实现私密日记和普通日记。.zip

    在Android平台上,开发一款移动日记本应用是一种常见的实践,它为用户提供了一种便捷的方式来记录他们的日常生活,情感体验,以及重要事件。这款名为"Diary"的应用不仅包含了传统的文本日记功能,还创新性地集成了...

    安卓开发实习日记参考.doc

    安卓开发实习日记参考.doc

    安卓超级日记本

    《安卓超级日记本:融合科技与记录的艺术》 在当今数字化时代,个人记录的重要性日益凸显,而“安卓超级日记本”作为一个集成了科大讯飞语音识别和分享功能的日记应用,无疑为用户提供了全新的日记体验。这款应用...

    社交网站后端项目开发日记(一)(csdn)————程序.pdf

    "社交网站后端项目开发日记(一)" 本文主要介绍了社交网站后端项目的开发日记,涵盖了项目的基本概念、技术栈选型、项目搭建、依赖管理、SpringBoot基础知识等方面。 一、项目概述 社交网站后端项目旨在开发一个...

    旅游日记APP的设计与开发.pdf

    ### 三、旅游日记APP的设计 在旅游日记APP的设计过程中,我们从用户体验出发,对APP进行了细致的功能模块划分和界面设计。 #### 1. 功能模块划分 - **旅程记录功能**:用户可以方便地输入旅行日志、上传照片和...

    应用SQLite开发简易心语日记源码

    本项目"应用SQLite开发简易心语日记源码"旨在教你如何利用SQLite创建一个简单的日记应用,实现日记的添加、删除、修改和查询功能。这对于理解和实践Android中的本地数据存储至关重要。 SQLite是一个轻量级的、开源...

    QT(C++)开发小众日记app项目-QtDiary.zip

    QT(C++)开发小众日记app项目_QtDiary.zip QT(C++)开发小众日记app项目_QtDiary.zip QT(C++)开发小众日记app项目_QtDiary.zip QT(C++)开发小众日记app项目_QtDiary.zipQT(C++)开发小众日记app项目_QtDiary....

    软件开发实习日记

    自己写的C#和.net实习日记,没一篇都是自己经历并记录的,对于快毕业要写实习日记的朋友有帮助。

    九宫格日记(J2EE开发)

    在J2EE平台上开发九宫格日记,意味着我们需要利用Java后端技术、数据库管理和Web前端技术来构建一个完整的应用程序。 首先,我们要理解J2EE(Java Platform, Enterprise Edition)框架。J2EE是Java企业级应用的标准...

Global site tag (gtag.js) - Google Analytics