Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
K
kb
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 2
    • Issues 2
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • Operations
    • Operations
    • Incidents
  • Analytics
    • Analytics
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • granite
  • kb
  • Wiki
    • Data_output
  • env

Last edited by fanzx Aug 17, 2021
Page history

env

执行环境交付

建议以后采用docker方式吧所有的环境集成好,部署直接用docker即可,目前是在客户提供的独立机器上一步一步安装的

系统

执行环境系统一般为centos

硬盘

数据硬盘一般要求为SSD

mysql数据

版本为8.0版本

Python环境

python3.7 miniconda(conda)

collie基础包

安装完成后需要替换其中的logging.conf, 参考

/home/fanzx/work_space/pycharm/project-collie/deploy/deploy_baiduyun.sh

FTP/SFTP

lftp user@ip
ftp user@ip

用户在交付ftp服务(被动模式)后,通过NAT方式给机器加了外网的IP,造成FTP数据传输时,返回的建立数据传输的IP是内网的IP,无法传输数据,解决方案 1.修改FTP的配置,增加一条配置,让建立输出传输通道的时候从外网IP(139.198.31.38)走

pasv_address=139.198.31.38

2.修改我们的writer--FTP

import socket
from ftplib import FTP, FTP_TLS, FTP_PORT, error_perm, parse150, error_reply
import os
import socket
import traceback

class FtpClient(FTP):
    def ntransfercmd(self, cmd, rest=None):
        size = None
        if self.passiveserver:
            host, port = self.makepasv()
            conn = socket.create_connection((self.host, port), self.timeout,
                                            source_address=self.source_address)
            try:
                if rest is not None:
                    self.sendcmd("REST %s" % rest)
                resp = self.sendcmd(cmd)
                # Some servers apparently send a 200 reply to
                # a LIST or STOR command, before the 150 reply
                # (and way before the 226 reply). This seems to
                # be in violation of the protocol (which only allows
                # 1xx or error messages for LIST), so we just discard
                # this response.
                if resp[0] == '2':
                    resp = self.getresp()
                if resp[0] != '1':
                    raise error_reply(resp)
            except:
                conn.close()
                raise
        else:
            with self.makeport() as sock:
                if rest is not None:
                    self.sendcmd("REST %s" % rest)
                resp = self.sendcmd(cmd)
                # See above.
                if resp[0] == '2':
                    resp = self.getresp()
                if resp[0] != '1':
                    raise error_reply(resp)
                conn, sockaddr = sock.accept()
                if self.timeout is not socket._GLOBAL_DEFAULT_TIMEOUT:
                    conn.settimeout(self.timeout)
        if resp[:3] == '150':
            # this is conditional in case we received a 125
            size = parse150(resp)
        return conn, size

class FtpFileHelper(object):
    def __init__(self, host, user, password, port=FTP_PORT, ssl=False):
        self._host = host
        self._user = user
        self._password = password
        self._port = port
        if ssl:
            self._ftp = FTP_TLS()
        else:
            self._ftp = FtpClient()
        self._ftp.set_debuglevel(1)
        self._connect()
Clone repository
  • README
  • basic_guidelines
  • basic_guidelines
    • basic_guidelines
    • dev_guide
    • project_build
    • 开发流程
  • best_practice
  • best_practice
    • AlterTable
    • RDS
    • azkaban
    • create_table
    • design
    • elasticsearch
    • elasticsearch
      • ES运维
    • logstash
View All Pages