import argparse
import datetime
import logging
import logging .config
import os
import sys
import time
def str_to_datetime( _str) :
return datetime .datetime .strptime ( _str, "%Y%m%d" )
def get_date_with_offset( _initial, _offset) :
__diff = datetime .timedelta ( days= _offset)
return _initial+__diff
def datetime_to_str( _date) :
return _date.strftime ( "%Y%m%d" )
def get_current_timestamp( ) :
return int ( time .time ( ) )
def datetime_to_str_fmt( _date, _format) :
return _date.strftime ( _format)
def datetime_to_str_fmt( datetime , format) :
return datetime .strftime ( format)
def gen_index_info( add_days, es_default_map) :
index_name_holder = es_default_map[ 'index' ] + '_{dt}'
index_date = datetime .datetime .strptime ( es_default_map[ 'start_date' ] , '%Y%m%d' ) + datetime .timedelta ( add_days)
index_date_map = { }
index_date_map[ 'index' ] = str ( index_name_holder) .replace ( '{dt}' , datetime_to_str_fmt( index_date, '%Y%m%d' ) )
index_date_map[ '__addday' ] = datetime_to_str_fmt( index_date, '%Y%m%d' )
return index_date_map
def process_args( ) :
parser = argparse.ArgumentParser ( usage= '%(prog)s [options]' )
parser .add_argument ( '--index_prefix' , type = str , default= 'paytm_' , dest= 'index_prefix' , help = 'set index prefix' )
parser .add_argument ( '--index_name' , type = str , default= 'user_consume_index_' , dest= 'index_name' , help = 'set index name' )
parser .add_argument ( '--start_at' , type = str , default= datetime_to_str_fmt( datetime .datetime .now ( ) , '%Y%m%d' ) , dest= 'start_date' , help = 'set start date,format:%Y%m%d' )
parser .add_argument ( '--end_at' , type = str , default= datetime_to_str_fmt( datetime .datetime .now ( ) , '%Y%m%d' ) , dest= 'end_date' , help = 'set end date,format:%Y%m%d' )
args = parser .parse_known_args ( )
es_default_map = { }
es_default_map[ 'index_prefix' ] = args[ 0 ] .index_prefix
es_default_map[ 'index_name' ] = args[ 0 ] .index_name
es_default_map[ 'index' ] = args[ 0 ] .index_prefix +'_' + args[ 0 ] .index_name
es_default_map[ 'start_date' ] = args[ 0 ] .start_date
es_default_map[ 'end_date' ] = args[ 0 ] .end_date
es_default_map[ 'host' ] = 'http://172.20.0.35:9200'
print ( es_default_map)
return es_default_map
def create_process( es_default_map) :
strt_date= str_to_datetime( es_default_map[ 'start_date' ] )
end_date = str_to_datetime( es_default_map[ 'end_date' ] )
cursor = strt_date
offset = 0
print ( get_date_with_offset( cursor, 1 ) )
while cursor <= end_date:
index_info = gen_index_info( offset, es_default_map)
query_url = '%s/%s' % ( es_default_map[ 'host' ] , index_info[ 'index' ] )
offset+= 1
cursor = get_date_with_offset( cursor, 1 )
print ( query_url)
print ( index_info)
print ( cursor)
if __name__ == '__main__' :
es_default_map= process_args( )
create_process( es_default_map)
aW1wb3J0IGFyZ3BhcnNlCmltcG9ydCBkYXRldGltZQppbXBvcnQgbG9nZ2luZwppbXBvcnQgbG9nZ2luZy5jb25maWcKaW1wb3J0IG9zCmltcG9ydCBzeXMKaW1wb3J0IHRpbWUKZGVmIHN0cl90b19kYXRldGltZShfc3RyKToKICAgIHJldHVybiBkYXRldGltZS5kYXRldGltZS5zdHJwdGltZShfc3RyLCAiJVklbSVkIikKZGVmIGdldF9kYXRlX3dpdGhfb2Zmc2V0KF9pbml0aWFsLCBfb2Zmc2V0KToKICAgIF9fZGlmZiA9IGRhdGV0aW1lLnRpbWVkZWx0YShkYXlzPV9vZmZzZXQpCiAgICByZXR1cm4gX2luaXRpYWwrX19kaWZmCmRlZiBkYXRldGltZV90b19zdHIoX2RhdGUpOgogICAgcmV0dXJuIF9kYXRlLnN0cmZ0aW1lKCIlWSVtJWQiKQpkZWYgZ2V0X2N1cnJlbnRfdGltZXN0YW1wKCk6CiAgICByZXR1cm4gaW50KHRpbWUudGltZSgpKQpkZWYgZGF0ZXRpbWVfdG9fc3RyX2ZtdChfZGF0ZSwgX2Zvcm1hdCk6CiAgICByZXR1cm4gX2RhdGUuc3RyZnRpbWUoX2Zvcm1hdCkKZGVmIGRhdGV0aW1lX3RvX3N0cl9mbXQoZGF0ZXRpbWUsIGZvcm1hdCk6CiAgICByZXR1cm4gZGF0ZXRpbWUuc3RyZnRpbWUoZm9ybWF0KQpkZWYgZ2VuX2luZGV4X2luZm8oYWRkX2RheXMsIGVzX2RlZmF1bHRfbWFwKToKICAgIGluZGV4X25hbWVfaG9sZGVyID0gZXNfZGVmYXVsdF9tYXBbJ2luZGV4J10gKyAnX3tkdH0nCiAgICBpbmRleF9kYXRlID0gZGF0ZXRpbWUuZGF0ZXRpbWUuc3RycHRpbWUoZXNfZGVmYXVsdF9tYXBbJ3N0YXJ0X2RhdGUnXSwgJyVZJW0lZCcpICsgZGF0ZXRpbWUudGltZWRlbHRhKGFkZF9kYXlzKQogICAgaW5kZXhfZGF0ZV9tYXAgPSB7fQogICAgaW5kZXhfZGF0ZV9tYXBbJ2luZGV4J10gPSBzdHIoaW5kZXhfbmFtZV9ob2xkZXIpLnJlcGxhY2UoJ3tkdH0nLCBkYXRldGltZV90b19zdHJfZm10KGluZGV4X2RhdGUsICclWSVtJWQnKSkKICAgIGluZGV4X2RhdGVfbWFwWydfX2FkZGRheSddID0gZGF0ZXRpbWVfdG9fc3RyX2ZtdChpbmRleF9kYXRlLCAnJVklbSVkJykKICAgIHJldHVybiBpbmRleF9kYXRlX21hcApkZWYgcHJvY2Vzc19hcmdzKCk6CglwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcih1c2FnZT0nJShwcm9nKXMgW29wdGlvbnNdJykKCXBhcnNlci5hZGRfYXJndW1lbnQoJy0taW5kZXhfcHJlZml4JywgdHlwZT1zdHIsIGRlZmF1bHQ9J3BheXRtXycsIGRlc3Q9J2luZGV4X3ByZWZpeCcsIGhlbHA9J3NldCBpbmRleCBwcmVmaXgnKQoJcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1pbmRleF9uYW1lJywgdHlwZT1zdHIsIGRlZmF1bHQ9J3VzZXJfY29uc3VtZV9pbmRleF8nLCBkZXN0PSdpbmRleF9uYW1lJyxoZWxwPSdzZXQgaW5kZXggbmFtZScpCglwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXN0YXJ0X2F0JywgdHlwZT1zdHIsIGRlZmF1bHQ9ZGF0ZXRpbWVfdG9fc3RyX2ZtdChkYXRldGltZS5kYXRldGltZS5ub3coKSwgJyVZJW0lZCcpLGRlc3Q9J3N0YXJ0X2RhdGUnLCBoZWxwPSdzZXQgc3RhcnQgZGF0ZSxmb3JtYXQ6JVklbSVkJykKCXBhcnNlci5hZGRfYXJndW1lbnQoJy0tZW5kX2F0JywgdHlwZT1zdHIsIGRlZmF1bHQ9ZGF0ZXRpbWVfdG9fc3RyX2ZtdChkYXRldGltZS5kYXRldGltZS5ub3coKSwgJyVZJW0lZCcpLGRlc3Q9J2VuZF9kYXRlJywgaGVscD0nc2V0IGVuZCBkYXRlLGZvcm1hdDolWSVtJWQnKQoJYXJncyA9IHBhcnNlci5wYXJzZV9rbm93bl9hcmdzKCkKCWVzX2RlZmF1bHRfbWFwID0ge30KCWVzX2RlZmF1bHRfbWFwWydpbmRleF9wcmVmaXgnXT1hcmdzWzBdLmluZGV4X3ByZWZpeAoJZXNfZGVmYXVsdF9tYXBbJ2luZGV4X25hbWUnXT1hcmdzWzBdLmluZGV4X25hbWUKCWVzX2RlZmF1bHRfbWFwWydpbmRleCddID0gYXJnc1swXS5pbmRleF9wcmVmaXggKydfJyArIGFyZ3NbMF0uaW5kZXhfbmFtZQoJZXNfZGVmYXVsdF9tYXBbJ3N0YXJ0X2RhdGUnXT1hcmdzWzBdLnN0YXJ0X2RhdGUKCWVzX2RlZmF1bHRfbWFwWydlbmRfZGF0ZSddPWFyZ3NbMF0uZW5kX2RhdGUKCWVzX2RlZmF1bHRfbWFwWydob3N0J109J2h0dHA6Ly8xNzIuMjAuMC4zNTo5MjAwJwoJcHJpbnQoZXNfZGVmYXVsdF9tYXApCglyZXR1cm4gZXNfZGVmYXVsdF9tYXAKZGVmIGNyZWF0ZV9wcm9jZXNzKGVzX2RlZmF1bHRfbWFwKToKICAgIHN0cnRfZGF0ZT1zdHJfdG9fZGF0ZXRpbWUoZXNfZGVmYXVsdF9tYXBbJ3N0YXJ0X2RhdGUnXSkKICAgIGVuZF9kYXRlID0gc3RyX3RvX2RhdGV0aW1lKGVzX2RlZmF1bHRfbWFwWydlbmRfZGF0ZSddKQogICAgY3Vyc29yID0gc3RydF9kYXRlCiAgICBvZmZzZXQgPSAwCiAgICBwcmludChnZXRfZGF0ZV93aXRoX29mZnNldChjdXJzb3IsIDEpKQogICAgd2hpbGUgY3Vyc29yIDw9IGVuZF9kYXRlOgogICAgCWluZGV4X2luZm8gPSBnZW5faW5kZXhfaW5mbyhvZmZzZXQsIGVzX2RlZmF1bHRfbWFwKQogICAgCXF1ZXJ5X3VybCA9ICclcy8lcycgJSAoZXNfZGVmYXVsdF9tYXBbJ2hvc3QnXSwgaW5kZXhfaW5mb1snaW5kZXgnXSkKICAgIAlvZmZzZXQrPTEKICAgIAljdXJzb3IgPSBnZXRfZGF0ZV93aXRoX29mZnNldChjdXJzb3IsIDEpCiAgICAJcHJpbnQocXVlcnlfdXJsKQogICAgCXByaW50KGluZGV4X2luZm8pCiAgICAJcHJpbnQoY3Vyc29yKQppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgoJZXNfZGVmYXVsdF9tYXA9cHJvY2Vzc19hcmdzKCkKCWNyZWF0ZV9wcm9jZXNzKGVzX2RlZmF1bHRfbWFwKQ==