@author: william @contact: [email protected] @site: http://www.xiaolewei.com @file: bowler.py @time: 03/05/2018 15:38 """ import time import json from multiprocessing import Process, Pipe from .httpbridge import run as build_bridge from kafka import KafkaConsumer from dc.constants.topics import AD_PROCESSED_TOPIC from dc.core import config, logger, db logger = logger.get('Schedule.Bowler') class Bowler(object): def __init__(self): self._db = db.get_mysql_client(config.get('app.db.mysql')) self._iterator = None def __iter__(self): return self def __next__(self): ''' Produce data :return: '''
#!/usr/bin/env python # encoding: utf-8 """ @author: william @contact: [email protected] @site: http://www.xiaolewei.com @file: wxcampaign.py @time: 10/05/2018 16:32 """ import json from .campaign import CampaignHelper from dc.core import logger import pendulum from dc.constants.ad import AD_BID_TYPE, AD_BID_TYPE_OCPM_OPT_MORE_CLICK, AD_BID_TYPE_OCPM_OPT_MORE_ORDER logger = logger.get('Models.WXCampaign') class WXCampaign(CampaignHelper): def __init__(self, campaign): self._campaign = campaign def is_beishang(self): ''' 定向城市是否为北京上海 :return: ''' try: beijing = 110000 shanghai = 310000 areas = json.loads(self._campaign['target_groups'][0]['ad_groups']
# encoding: utf-8 """ @author: william @contact: [email protected] @site: http://www.xiaolewei.com @file: commander.py @time: 16/05/2018 15:57 """ import json from .catcher import Catcher from dc.core import config, logger from kafka import KafkaConsumer from dc.constants.topics import AGENCY_COMMAND_REPORTER_TOPIC from dc.models import Action logger = logger.get('Catcher.Commander') class Commander(Catcher): def __init__(self): Catcher.__init__(self) kafka_server = '%s:%d' % (config.get('app.kafka.host'), config.get('app.kafka.port')) logger.info('Try to connect to kafka...') self._consumer = KafkaConsumer(AGENCY_COMMAND_REPORTER_TOPIC, client_id='commander_result_reporter', group_id='commander_result_reporter', bootstrap_servers=kafka_server) logger.info('Connect to kafka[%s] successfully' % AGENCY_COMMAND_REPORTER_TOPIC) self._consumer_command_res()
@site: http://www.xiaolewei.com @file: gardener.py @time: 03/05/2018 23:01 """ import random import json import pycron import pendulum from dc.core import db, config, logger from .bowler import Bowler from .commander import Commander from dc.models import Model, Strategy, Filter, HistoryFilter, \ Trim, Action, Campaign, WXCampaign, Point, CampaignHelper from dc.constants.ad import ADSTATUS_NORMAL logger = logger.get('Schedule.Gardener') OP_EQ = '=' OP_NEQ = '!=' OP_GT = '>' OP_EGT = '>=' OP_LT = '<' OP_ELT = '<=' TYPE_STR = 'string' TYPE_INT = 'int' TYPE_DOUBLE = 'double' InvalidType = None
@author: william @contact: [email protected] @site: http://www.xiaolewei.com @file: reporter.py @time: 10/04/2018 16:14 """ import threading import json from kafka import KafkaConsumer, KafkaProducer import pendulum from dc.core import cache, logger, config, db import requests from .catcher import Catcher from dc.constants.topics import AD_PROCESSED_TOPIC, AD_CAMPAIGN_INFO_TOPIC, AD_ORIGIN_STATISTIC_TOPIC logger = logger.get('Catcher.Reporter') def fetch_order_info(start, end): ''' :param start: :param end: :return: ''' resp = requests.get(config.get('app.api.order.url') % (start, end)) if resp.status_code / 100 == 2: return json.loads(resp.content) def connect_order(ads, order, prefix=''): for ad in ads:
#!/usr/bin/env python # encoding: utf-8 """ @author: william @contact: [email protected] @site: http://www.xiaolewei.com @file: commander.py @time: 04/05/2018 11:38 """ import json from kafka import KafkaProducer from dc.core import config, logger from dc.constants.topics import AGENCY_COMMAND_TOPIC logger = logger.get('Schedule.Commander') class Commander(object): def __init__(self): pass def transmit(self, actions): raise NotImplemented class KafkaTopicCommander(Commander): def __init__(self): Commander.__init__(self) kafka_server = '%s:%d' % (config.get('app.kafka.host'), config.get('app.kafka.port')) self._producer = KafkaProducer(