| | |
| | | from code_attribute.code_data_util import ZYLTGBUtil |
| | | from code_attribute.gpcode_manager import CodePrePriceManager |
| | | from huaxin_client import l1_subscript_codes_manager |
| | | from log_module.async_log_util import huaxin_l2_log |
| | | from log_module.log import logger_local_huaxin_l2_error |
| | | from third_data import history_k_data_util, kpl_api |
| | | import http |
| | | import json |
| | | import logging |
| | | import socketserver |
| | | import time |
| | | from http.server import BaseHTTPRequestHandler |
| | | import dask |
| | | |
| | | from code_attribute.gpcode_manager import BlackListCodeManager |
| | | from l2.l2_transaction_data_manager import HuaXinBuyOrderManager |
| | | from log_module.log import logger_system, logger_debug, logger_kpl_limit_up, logger_request_api |
| | | from third_data.custom_block_in_money_manager import CodeInMoneyManager |
| | | from third_data.kpl_data_constant import LimitUpCodesBlockRecordManager, LimitUpDataConstant |
| | | from third_data.kpl_limit_up_data_manager import LatestLimitUpBlockManager, CodeLimitUpSequenceManager |
| | | from third_data.third_blocks_manager import BlockMapManager |
| | | from trade.buy_radical.block_special_codes_manager import BlockSpecialCodesManager |
| | | from trade.buy_strategy import OpenLimitUpGoodBlocksBuyStrategy |
| | | from trade.buy_radical.radical_buy_data_manager import RadicalBuyBlockManager |
| | | from utils import global_util, tool, data_export_util |
| | | from code_attribute import gpcode_manager |
| | | from log_module import log_analyse, log_export, async_log_util |
| | | |
| | | import urllib.parse as urlparse |
| | | from urllib.parse import parse_qs |
| | | from output import code_info_output, limit_up_data_filter, output_util, kp_client_msg_manager |
| | | |
| | | from trade import bidding_money_manager, trade_manager, l2_trade_util, trade_record_log_util, trade_constant, \ |
| | | trade_data_manager |
| | | import concurrent.futures |
| | | |
| | | # 禁用http.server的日志输出 |
| | | logger = logging.getLogger("http.server") |
| | | logger.setLevel(logging.CRITICAL) |
| | | |
| | | |
| | | class DataServer(BaseHTTPRequestHandler): |
| | | # 禁用日志输出 |
| | | def log_message(self, format, *args): |
| | | pass |
| | | |
| | | def do_GET(self): |
| | | path = self.path |
| | | url = urlparse.urlparse(path) |
| | | async_log_util.info(logger_request_api, f"开始请求{tool.get_thread_id()}-{url}") |
| | | response_data = "" |
| | | if url.path == "/get_block_codes_money": |
| | | ps_dict = dict([(k, v[0]) for k, v in parse_qs(url.query).items()]) |
| | | block = ps_dict['block'] |
| | | try: |
| | | pass |
| | | response_data = json.dumps({"code": 0, "data": data}) |
| | | except Exception as e: |
| | | logger_debug.exception(e) |
| | | logging.exception(e) |
| | | self.send_response(200) |
| | | # 发给请求客户端的响应数据 |
| | | self.send_header('Content-type', 'application/json') |
| | | self.end_headers() |
| | | self.wfile.write(response_data.encode()) |
| | | |
| | | |
| | | class ThreadedHTTPServer(socketserver.ThreadingMixIn, http.server.HTTPServer): |
| | | pass |
| | | |
| | | |
| | | def run(addr, port): |
| | | handler = DataServer |
| | | try: |
| | | httpd = ThreadedHTTPServer((addr, port), handler) |
| | | print("HTTP server is at: http://%s:%d/" % (addr, port)) |
| | | httpd.serve_forever() |
| | | except Exception as e: |
| | | logger_system.exception(e) |
| | | logger_system.error(f"端口服务器:{port} 启动失败") |
| | | |
| | | |
| | | if __name__ == "__main__": |
| | | codes_sh, codes_sz = l1_subscript_codes_manager.get_codes() |
| | | codes = set() |
| | | if codes_sh: |
| | | for code_byte in codes_sh: |
| | | codes.add(code_byte.decode()) |
| | | for code_byte in codes_sz: |
| | | codes.add(code_byte.decode()) |
| | | |
| | | updated_codes = ZYLTGBUtil.get_today_updated_volume_codes() |
| | | codes = codes - set(updated_codes) |
| | | |
| | | # 获取最近的价格 |
| | | price_datas = history_k_data_util.JueJinApi.get_gp_current_info(codes, "symbol,price") |
| | | price_dict = {x['symbol'].split(".")[1]: x['price'] for x in price_datas} |
| | | for code in price_dict: |
| | | try: |
| | | zylt = kpl_api.getZYLTAmount(code) |
| | | ZYLTGBUtil.save_volume(code, int(zylt / price_dict[code])) |
| | | except: |
| | | pass |
| | | run("", 9004) |