python socket client counter

import multiprocessing

import time, datetime

import json

import string, socket

import fcntl

import ConfigParser

 

def lock_file(file):

               fcntl.flock(file.fileno(), fcntl.LOCK_EX)

 

def unlock_file(file):

               fcntl.flock(file.fileno(), fcntl.LOCK_UN)

 

def count_msg(name, is_success):

               """

               Count and record msgs in configuration file according to the given name.

               """

 

               sendmsg_ini = 'endpoint_sendmsg.ini'

               conf = ConfigParser.SafeConfigParser()

               # create configuration file if it does not exist

               try:

                               file = open(sendmsg_ini, 'r+')

               except IOError, e:

                               file = open(sendmsg_ini, 'a+')

 

               lock_file(file)

               conf.read(sendmsg_ini)

               try:

                               total_success = conf.getint(name, '%s_send_success_counter' % name)

                               total_fail = conf.getint(name, '%s_send_failure_counter' % name)

               except ConfigParser.NoSectionError, e:

                               # empty file, do init

                               print 'section %s does not exist in endpoint send msg configuration file, initsection %s' % (name, name)

                               conf.add_section(name)

                               conf.set(name, '%s_send_success_counter' % name, '0')

                               conf.set(name, '%s_send_failure_counter' % name, '0')

                               if is_success:

                                               conf.set(name, '%s_send_success_counter' % name, '1')

                                               conf.set(name, '%s_send_failure_counter' % name, '0')

                                              print 'total %s success task number is: %s' % (name, '1')

                                               print 'total %s failure task number is: %s' % (name, '0')

                               else:

                                               conf.set(name, '%s_send_failure_counter' % name, '1')

                                               conf.set(name, '%s_send_success_counter' % name, '0')

                                               print 'total %s success task number is: %s' % (name, '0')

                                               print 'total %s failure task number is: %s' % (name, '1')

                               conf.write(file)

               except Exception, e:

                               print 'write %s send message record error! message: %s' % (name, repr(e))

               else:

                               if is_success:

                                               total_success += 1

                               else:

                                               total_fail += 1

 

                               conf.set(name, '%s_send_success_counter' % name, str(total_success))

                               conf.set(name, '%s_send_failure_counter' % name, str(total_fail))

                               conf.write(file)

                               print 'total %s success task number is: %s' % (name, total_success)

                               print 'total %s failure task number is: %s' % (name, total_fail)

               finally:

                               file.flush()

                               unlock_file(file)

                               file.close()

 

ios_req1 = {

                               "messages": [

                               {

                                 "devicetoken": "d7c49bb6fab13bd338928dcfddd300a9e3ce27ca718eb07df0812f311afab2ed",

                                 "message": "Your ios app1 has been blocked bywebsense",

                                 "platform": 1

                               }

                               ],

                               "length": 1

               }

 

ios_req2 = {

                               "messages": [

                               {

                                 "devicetoken": "d7c49bb6fab13bd338928dcfddd300a9e3ce27ca718eb07df0812f311afab2ed",

                                 "message": "Your ios app2 has been blocked bywebsense",

                                 "platform": 1,

                                 "customed_payload":{}

                               },

                               {

                                 "devicetoken": "d7c49bb6fab13bd338928dcfddd300a9e3ce27ca718eb07df0812f311afab2ed",

                                 "message": "Your ios app2.1 has been blocked bywebsense",

                                 "platform": 1,

                                 "customed_payload":{}

                               }

                               ],

                               "length": 2

               }

 

ios_req3 = {

                               "messages": [

                               {

                                 "devicetoken": "99999999",

                                 "message": "Your ios app1.3 has been blocked bywebsense",

                                 "platform": 1

                               },

                               {

                                 "devicetoken": "88888888",

                                 "message": "Your ios app1.4 has been blocked bywebsense",

                                 "platform": 1

                               }

                               ],

                               "length": 2

               }

 

ios_req4 = {"messages": 12345}

 

ard_req1 = {

                               "messages": [

                               {

                                 #"devicetoken": "APA91bGTwkASQ2Oh9_TuwRUv87ptSnD2TlIUGvsWplo5_fUXXLZd8sM_6pn6CTXO7-MQhQHmJLv2nY2NotvRKPYzI50-v9kozpNjzDVKbqtXxF9LFNbBnEAVPP4_XigQ3PBTqPUoU8sZvlJ16c1KjuQK4La-qElBS5MtjqgIUtM1Qy74-zdGSBw",

                                 #"devicetoken": "APA91bFj7HIXCNQ1dlI-uun88UDxZjvVAOTRuwA1f9qTmAAdFTppp5v2rnTRRwWO6xD89OTJ3u0YzMurs25fdXWpS9wJBw7LACrYbA9AZBaPENFZdBNWdPDnDAI0e06KG77LTUVWWw-ftuTeSaD-_BjewLNZxNr_pmbawiQZ8L4GCNcnHlCC-2U",

                                 "devicetoken": "APA91bGKie7RpFTL6eG-3CVQb335ZnyFN2MChP9M_LlML_zu6wH8gV1MlhVkwXjQy1MpbWvuzybPwvxXmTC2FJuabSaEn_EbftRst3cfS992m4weSFEA66ddsSHTwh0f6pVO0R96Xi4-iBueS199Qt1jw-9Z6aHpUSdDp_0ySrucA9uosbBV8k8",

                                 "message": "Your ard app1 has been blocked bywebsense",

                                 "platform": 2,

                                 "customed_payload":{}

                               }

                               ],

                               "length": 1

               }

 

ard_req2 = {

                               "messages": [

                               {

                                 #"devicetoken": "APA91bGTwkASQ2Oh9_TuwRUv87ptSnD2TlIUGvsWplo5_fUXXLZd8sM_6pn6CTXO7-MQhQHmJLv2nY2NotvRKPYzI50-v9kozpNjzDVKbqtXxF9LFNbBnEAVPP4_XigQ3PBTqPUoU8sZvlJ16c1KjuQK4La-qElBS5MtjqgIUtM1Qy74-zdGSBw",

                                 #"devicetoken": "APA91bFj7HIXCNQ1dlI-uun88UDxZjvVAOTRuwA1f9qTmAAdFTppp5v2rnTRRwWO6xD89OTJ3u0YzMurs25fdXWpS9wJBw7LACrYbA9AZBaPENFZdBNWdPDnDAI0e06KG77LTUVWWw-ftuTeSaD-_BjewLNZxNr_pmbawiQZ8L4GCNcnHlCC-2U",

                                 "devicetoken": "APA91bGKie7RpFTL6eG-3CVQb335ZnyFN2MChP9M_LlML_zu6wH8gV1MlhVkwXjQy1MpbWvuzybPwvxXmTC2FJuabSaEn_EbftRst3cfS992m4weSFEA66ddsSHTwh0f6pVO0R96Xi4-iBueS199Qt1jw-9Z6aHpUSdDp_0ySrucA9uosbBV8k8",

                                 "message": "Your ard app2 has been blocked bywebsense",

                                 "platform": 2,

                                 "customed_payload":{}

                               },

                               {

                                 "devicetoken": "APA91bGKie7RpFTL6eG-3CVQb335ZnyFN2MChP9M_LlML_zu6wH8gV1MlhVkwXjQy1MpbWvuzybPwvxXmTC2FJuabSaEn_EbftRst3cfS992m4weSFEA66ddsSHTwh0f6pVO0R96Xi4-iBueS199Qt1jw-9Z6aHpUSdDp_0ySrucA9uosbBV8k8",

                                 #"devicetoken": "APA91bFj7HIXCNQ1dlI-uun88UDxZjvVAOTRuwA1f9qTmAAdFTppp5v2rnTRRwWO6xD89OTJ3u0YzMurs25fdXWpS9wJBw7LACrYbA9AZBaPENFZdBNWdPDnDAI0e06KG77LTUVWWw-ftuTeSaD-_BjewLNZxNr_pmbawiQZ8L4GCNcnHlCC-2U",

                                 "message": "Your ard app2.1 has been blocked bywebsense",

                                 "platform": 2,

                                 "customed_payload":{}

                               },

                               {

                                 "devicetoken": "APA91bGKie7RpFTL6eG-3CVQb335ZnyFN2MChP9M_LlML_zu6wH8gV1MlhVkwXjQy1MpbWvuzybPwvxXmTC2FJuabSaEn_EbftRst3cfS992m4weSFEA66ddsSHTwh0f6pVO0R96Xi4-iBueS199Qt1jw-9Z6aHpUSdDp_0ySrucA9uosbBV8k8",

                                 #"devicetoken":"APA91bFj7HIXCNQ1dlI-uun88UDxZjvVAOTRuwA1f9qTmAAdFTppp5v2rnTRRwWO6xD89OTJ3u0YzMurs25fdXWpS9wJBw7LACrYbA9AZBaPENFZdBNWdPDnDAI0e06KG77LTUVWWw-ftuTeSaD-_BjewLNZxNr_pmbawiQZ8L4GCNcnHlCC-2U",

                                 "message": "Your ard app2.2 has been blocked bywebsense",

                                 "platform": 2,

                                 "customed_payload":{}

                               },

                               {

                                 "devicetoken":"APA91bGKie7RpFTL6eG-3CVQb335ZnyFN2MChP9M_LlML_zu6wH8gV1MlhVkwXjQy1MpbWvuzybPwvxXmTC2FJuabSaEn_EbftRst3cfS992m4weSFEA66ddsSHTwh0f6pVO0R96Xi4-iBueS199Qt1jw-9Z6aHpUSdDp_0ySrucA9uosbBV8k8",

                                 #"devicetoken": "APA91bFj7HIXCNQ1dlI-uun88UDxZjvVAOTRuwA1f9qTmAAdFTppp5v2rnTRRwWO6xD89OTJ3u0YzMurs25fdXWpS9wJBw7LACrYbA9AZBaPENFZdBNWdPDnDAI0e06KG77LTUVWWw-ftuTeSaD-_BjewLNZxNr_pmbawiQZ8L4GCNcnHlCC-2U",

                                 "message": "Your ard app2.3 has been blocked bywebsense",

                                 "platform": 2,

                                 "customed_payload":{}

                               }

                               ],

                               "length": 4

               }

 

  

ard_req3 = {

                               "messages": [

                               {

                                 "devicetoken": "APA91bGKie7RpFTL6eG-3CVQb335ZnyFN2MChP9M_LlML_zu6wH8gV1MlhVkwXjQy1MpbWvuzybPwvxXmTC2FJuabSaEn_EbftRst3cfS992m4weSFEA66ddsSHTwh0f6pVO0R96Xi4-iBueS199Qt1jw-9Z6aHpUSdDp_0ySrucA9uosbBV8k8",

                                 "message": "Your ard app3.1 has been blocked bywebsense",

                                 "platform": 2,

                                 "customed_payload":{}

                               },

                               {

                                 "devicetoken": "APA91bGTwkASQ2Oh9",

                                 "message": "Your ard app3.2 has been blocked bywebsense",

                                 "platform": 2,

                                 "customed_payload":{}

                               }

                               ],

                               "length": 2

               }

 

ard_req4 = {

                               "messages": [

                               {

                                 "devicetoken": "9999999",

                                 "message": "Your ard app4.1 has been blocked bywebsense",

                                 "platform": 2,

                                 "customed_payload":{}

                               }

                               ],

                               "length": 1

               }

def func(msg):

               #for i in xrange(3):

               #             printmsg

               #            time.sleep(1)

               return "done " + str(msg)

 

def sendmsg_ios(md,x):            

               sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) 

               sock.connect("/var/run/mdmi/push_service.sock")       

               ios_req1["messages"][0]["message"] = "Your ios app %dhas been blocked by websense" % x

               ios_req1["messages"][0]["message"] += " - "

               ios_req1["messages"][0]["message"] += str(md)

               sock.send(json.dumps(ios_req1))

               results = sock.recv(1024)

               sock.close() 

               print results

               res = json.loads(results)

               code = res["code"]

               try:

                               if (code==200):

                                               count_msg('APN', True)

                               else:

                                               count_msg('APN', False)

               except Exception, e:

                                               print "Exception: %s" % str(e)

               return code

 

def sendmsg_ard(md,x):           

               sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) 

               sock.connect("/var/run/mdmi/push_service.sock")       

               ard_req4["messages"][0]["message"] = "Your ard app %dhas been blocked by websense" % x

               ard_req4["messages"][0]["message"] += " - "

               ard_req4["messages"][0]["message"] += str(md)

               sock.send(json.dumps(ard_req1))

               results = sock.recv(1024)

               sock.close() 

               print results

               res = json.loads(results)

               code = res["code"]

               try:

                               if (code==200):

                                               count_msg('GCM', True)

                               else:

                                               count_msg('GCM', False)

               except Exception, e:

                                               print "Exception: %s" % str(e)

               return code

 

if __name__ == "__main__":

 

               pool = multiprocessing.Pool(processes=10)

               result = []

               starttime = time.time()

               msg_cnt = 300

               for x in xrange(msg_cnt):

                               md = datetime.datetime.now().microsecond

                               result.append(pool.apply_async(sendmsg_ios, (md, x, )))

               pool.close()

               pool.join()

               #for res in result:

               #             RES =res.get()

               endtime = time.time()

               sec_cost = endtime - starttime

               output = "Sent %d msgs time cost: %d seconds.\n" % (msg_cnt,sec_cost)

               print output

               print "Sub-process(es) done."

               #print "%d requests sent successfully, %d requests sent failed!" %(RES[0], RES[1])

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值