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

env · Changes

Page history
update: 数据对外输出的问题总结 authored Aug 17, 2021 by fanzx's avatar fanzx
Hide whitespace changes
Inline Side-by-side
Showing with 95 additions and 0 deletions
+95 -0
  • data_output/env.md data_output/env.md +95 -0
  • No files found.
data_output/env.md 0 → 100644
View page @ c2a94f75
# 执行环境交付
## 系统
执行环境系统一般为centos
## 硬盘
数据硬盘一般要求为SSD
## mysql数据
版本为8.0版本
## Python环境
python3.7
miniconda(conda)
## collie基础包
安装完成后需要替换其中的logging.conf, 参考
```html
/home/fanzx/work_space/pycharm/project-collie/deploy/deploy_baiduyun.sh
```
## FTP/SFTP
```html
lftp user@ip
ftp user@ip
```
用户在交付ftp服务(被动模式)后,通过NAT方式给机器加了外网的IP,造成FTP数据传输时,返回的建立数据传输的IP是内网的IP,无法传输数据,解决方案
1.修改FTP的配置,增加一条配置,让建立输出传输通道的时候从外网IP(139.198.31.38)走
```html
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