Beispiel #1
0
@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:
        '''
Beispiel #2
0
#!/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']
Beispiel #3
0
# 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()
Beispiel #4
0
@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

Beispiel #5
0
@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:
Beispiel #6
0
#!/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(