9 Articles, Search for 'Python'

  1. 2009/04/21 yum 장애 조치
  2. 2008/03/06 Python에서 MSSQL 사용하기
  3. 2008/02/25 mod_python 오류
  4. 2008/01/22 ClamAV Oversized.Zip FOUND 문제.
  5. 2006/11/28 Python C Module 만들기
프로그래밍/기타2009/04/21 15:39

※ 오류 메세지

Traceback (most recent call last):
  File "/usr/bin/yum", line 29, in ?
    yummain.user_main(sys.argv[1:], exit_code=True)
  File "/usr/share/yum-cli/yummain.py", line 229, in user_main
    errcode = main(args)
  File "/usr/share/yum-cli/yummain.py", line 104, in main
    result, resultmsgs = base.doCommands()
  File "/usr/share/yum-cli/cli.py", line 339, in doCommands
    self._getTs(needTsRemove)
  File "/usr/lib/python2.4/site-packages/yum/depsolve.py", line 101, in _getTs
    self._getTsInfo(remove_only)
  File "/usr/lib/python2.4/site-packages/yum/depsolve.py", line 112, in _getTsInfo
    pkgSack = self.pkgSack
  File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 591, in <lambda>
    pkgSack = property(fget=lambda self: self._getSacks(),
  File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 434, in _getSacks
    self.repos.populateSack(which=repos)
  File "/usr/lib/python2.4/site-packages/yum/repos.py", line 251, in populateSack
    sack.populate(repo, mdtype, callback, cacheonly)
  File "/usr/lib/python2.4/site-packages/yum/yumRepo.py", line 181, in populate
    dobj = repo_cache_function(xml, csum)
  File "/usr/lib/python2.4/site-packages/sqlitecachec.py", line 42, in getPrimary
    self.repoid))
TypeError: Parsing primary.xml error: Start tag expected, '<' not found


※ 조치 방법

# ldd /usr/lib/python2.4/site-packages/libxml2mod.so
        linux-gate.so.1 =>  (0x00c78000)
        libxml2.so.2 => /opt/lampp/lib/libxml2.so.2 (0x00110000)
        libc.so.6 => /lib/libc.so.6 (0x00211000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00e09000)
        libm.so.6 => /lib/libm.so.6 (0x00b40000)
        /lib/ld-linux.so.2 (0x00883000)

/usr/lib/libxml2.so.2를 참조 할 수 있도록
/etc/ld.so.conf 파일의 lib 경로 조절


 

2009/04/21 15:39 2009/04/21 15:39
Posted by 나그네
프로그래밍/Python2008/03/06 14:34

Python module:
    http://pymssql.sourceforge.net(새 창으로 열기)

장애 1)

    Traceback (most recent call last):
      File "/email_server/src/server/spam/xspam_centerlog.py", line 8, in ?
      File "/usr/local/python2.4.2/lib/python2.4/site-packages/pymssql.py", line 30, in ?
        import _mssql
    ImportError: /usr/local/python2.4.2/lib/python2.4/site-packages/_mssql.so: undefined symbol: dbcolinfo


조치 1)

    http://www.freetds.org/software.html(새 창으로 열기) 에서 FreeTDS-stable.tgz 을 다운받아 설치한다.
    직접 다운받기 : http://ibiblio.org/pub/linux/alpha/free ··· able.tgz(새 창으로 열기)


장애 2)   

    Traceback (most recent call last):
      File "/email_server/src/server/spam/xspam_common.py", line 79, in xspam_main
      File "/email_server/src/server/spam/xspam_centerlog.py", line 20, in proc_main
      File "/usr/local/python2.4.2/lib/python2.4/site-packages/pymssql.py", line 328, in connect
        con = _mssql.connect(dbhost, dbuser, dbpasswd)
    error: DB-Lib error message 20009, severity 9:
    Server is unavailable or does not exist.


조치 2)

  dbhost에 port까지 명시한다.
  con = pymssql.connect( host='192.168.0.10:1433', user='sa', password='', database='temp')
  cur = con.cursor()

장애 2때문에 반나절 삽질을좀 했네요~
2008/03/06 14:34 2008/03/06 14:34
Posted by 나그네
Tags ,
프로그래밍/Python2008/02/25 19:01

TRAC 0.10.4 => 0.11b1 업데이트후 다음과 같은 오류 발생

[Mon Feb 18 19:49:02 2008] [notice] child pid 22852 exit signal Segmentation fault (11)

확인 사항

$ ldd /opt/lampp/bin/httpd | grep expat
libexpat.so.0 => /opt/lampp/lib/libexpat.so.0 (0xb7e8c000)

$ strings /usr/lib/libexpat.so.0 | grep expat_
expat_1.95.2

혹은

$ ps aux | grep http | head -3
root      3625  0.0  0.6 31068 12836 ?       SN   Sep25   0:08 /usr/sbin/httpd
apache   24814  0.0  0.7 34196 15604 ?       SN   04:11   0:00 /usr/sbin/httpd
apache   24815  0.0  0.7 33924 15916 ?       SN   04:11   0:00 /usr/sbin/httpd

$/usr/sbin/lsof -p 3625 | grep expat
httpd   3625 root  mem    REG     253,0   123552    6409040 /opt/lampp/lib/libexpat.so.0.1.0

$ strings /usr/lib/libexpat.so.0.5.0 | grep expat_
expat_1.95.2

# python
Python 2.4.4 (#2, Feb 12 2008, 13:08:42)
[GCC 4.1.1 20070105 (Red Hat 4.1.1-52)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyexpat
>>> pyexpat.version_info
(1, 95, 8)

Apache에서 사용되어지는 expat 라이브러리와 Python에서 사용하는 라이브러리 버전이 달라서 생기는 현상임.


해결방법

/opt/lampp/lib/libexpat.a ->  /usr/lib/libexpat.a
/opt/lampp/lib/libexpat.so -> /lib/libexpat.so

2008/02/25 19:01 2008/02/25 19:01
Posted by 나그네
프로그래밍/Python2008/01/22 17:48
증상 : clamscan으로 검사시 Oversized.Zip 라는 메세지 출력
$ clamscan Mdsr.1200970448.1465831.Q00073802
Mdsr.1200970448.1465831.Q00073802: Oversized.Zip FOUND

----------- SCAN SUMMARY -----------
Known viruses: 194517
Engine version: 0.91.2
Scanned directories: 0
Scanned files: 1
Infected files: 1
Data scanned: 0.00 MB
Time: 8.390 sec (0 m 8 s)

원인 : 정확하지는 않지만... 압축 파일의 압축률이 문제가 되는듯함.


조치사항:
Clamd
/usr/local/etc/clamd.conf 파일의
#ArchiveMaxCompressionRatio 300

ArchiveMaxCompressionRatio 500
와같이 주석을 제거한후 500으로 변경

Clamscan
$clamscan --max-ratio=500 Mdsr.1200970448.1465831.Q00073802

PyClamav
vi pyclamav.c 파일을 다음과 같이 수정
  /* set up archive limits */
  memset(&limits, 0, sizeof(struct cl_limits));
  limits.maxfiles       = 1000; /* max files */
  limits.maxfilesize   = 10 * 1048576; /* maximal archived file size == 10 Mb */
  limits.maxreclevel  = 5; /* maximal recursion level */
  limits.maxratio       = 500; /* maximal compression ratio */
  limits.archivememlim  = 0; /* disable memory limit for bzip2 scanner */
2008/01/22 17:48 2008/01/22 17:48
Posted by 나그네
프로그래밍/Python2006/11/28 01:25

요즘은 주로 Python 다루고 있다~
이놈을 다루다보면 가끔 C Module이 필요할때가 있다~
성능때문에... 외부연동때문에... 그냥 뭔가 있어보일라고~ ㅋ~

C와 연동이 쉽다고 하는데~
누구야~ 가만안두겠으~~~~~~~

참고 사이트:
  -  C 확장 모듈 만들기
  -  Python/C API Reference Manual
  -  FAQ모음

C모듈을 잘못 만들면 메모리 누수가 팍팍 일어난다~
항상 참조부분에 대해서 주의가 필요한다~

간단해 보인다~

PyList_SetItem이 아닌...
PyList_Append를 사용한다면?

PyList_Append(flist, PyFloat_FromDouble(v));

이리하면 100% 메모리 누수가 일어난다~

PyObject *value = PyFloat_FromDouble(v);
PyList_Append(flist, value);
Py_DECREF(value);



위와 같이 해야 메모리 누수를 막을수 있다~

Python의 경우 참조횟수에따라 가비지가 수집을 하는데~
PyList_SetItem은 내부적은 참조 횟수를 조절해주지만 PyList_Append는 그렇지 못하다~
API Reference를 잘 참고하면서 작업해야만 한다~

2006/11/28 01:25 2006/11/28 01:25
Posted by 나그네