Solve Problem dh key too small (_ssl.c:777) #Python

 

Bagi kamu yang melakukan migrasi mesin server linux saat menemukan problem pada library requests seperti ini :

[ssl: ssl_negative_length] dh key too small (_ssl.c:777)

pada sistem operasi linux (ubuntu) error di atas karena urllib3 belum terinstall di invironment, solusinya install terlebih dahulu

pip3 install urllib3

lakukan testcase seperti dibawah ini :

import requests
requests.packages.urllib3.disable_warnings()
requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS += 'HIGH:!DH:!aNULL'
url='https://garuda-indonesia.com/'
try:
    requests.packages.urllib3.contrib.pyopenssl.DEFAULT_SSL_CIPHER_LIST += 'HIGH:!DH:!aNULL'
except AttributeError:
    # no pyopenssl support used / needed / available
    pass
 
page = requests.get(url, verify=False)
print(page)
#source by stack oferfvlow

 

semoga membantu

 

Python Virtualenv and Cron Jobs

virtualenv-python

Bagaimana untuk menjalankan cron jobs python di virtualenv ?

–  login sebagai super user 

sudo -i

–  buka crontab

crontab -e

–  setting cron job misal setiap 17 menit

*/17 * * * *    cd /var/www/MyProject && venv/bin/python3.6 scraper.py

–  simpan crontab

ctrl+o lalu tekan enter kemudian ctrl+x

– lihat status crontab 

crontab -l

jika ada problem tentang python bisa hubungi kami mitratek team

Pendulum, Human Date Time

python date time made easy

Python memiliki banyak library yang berhubungan dengan pengolahan date time. dari sekian banyak library ada salah satu library yang cukup rekomended yaitu pendulum.

install pendulum dengan pip

pip install pendulum

bagaimana cara menggunakan pendulum ?, pelajari source di bawah ini

def _parse_unix_time(time_unix, timezone='Asia/Jakarta'):
    dt = pendulum.from_timestamp(int(time_unix))
    de = dt.in_timezone(timezone)
 
    # return formatted
    return {
        'time': de.format('HH:mm', formatter='alternative'),
        'date': de.format('YYYY-MM-DD', formatter='alternative'),
        'human_date': de.format('D MMM YYYY', formatter='alternative')
    }
print(_parse_unix_time('1508489400'))

results :

{'time': '16:50', 'date': '2017-10-20', 'human_date': '20 Oct 2017'}

bagi kamu yang pingin tau lebih lanjut tentang pendulum cek dokumentasinya di sini

 

 

Virtualenv Python Version

 

change time zone using pytz

python

 

Virtual environment adalah sebuah tool yang digunakan untuk membuat sebuah environment yang terisolasi dari dunia luar. sehingga modul python yang di install tidak mempengaruhi environment global dan project yang lain.

untuk instalasi virtual environment di windows

pip install virtualenvwrapper-win

bagaimana membuat virtualenv dan menggunakan python version ?

mkvirtualenv --python=path_python_version myproject

🙂

 

Python Xml2dict

change time zone using pytz

python

Bagaimana cara mengubah tag xml kedalam bentuk dictionary ?

Dalam bahasa pemrograman python terdapat banyak libarary yang bisa kita pakai untuk mengkonvert xml ke dalam bentuk json dan dictionary. salah satu library yang cukup rekomended adalah XML2DICT. Xml2dict secara automation akan melakukan konvert kedalam bentuk dictionary dan menyesuaikanya dalam format yang humanize.

perhatikan sample di bawah ini :

import xml2dict
import json
x ="""
<SOAP-ENV:Envelope
	xmlns:SOAP-ENV=”http://schemas.xmlsoap.org/soap/envelope/”
	xmlns:xsd=”http://www.w3.org/2001/XMLSchema”
	xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
	xmlns:SOAP-ENC=”http://schemas.xmlsoap.org/soap/encoding/”
	xmlns:tns=”urn:webservice”>
		<SOAP-ENV:Body>
			<ns1:WsCancelPNRResponse xmlns:ns1=”urn:sj_service”>
				<return xsi:type=”tns:respWsCancelPNR”>
					<Username xsi:type=”xsd:string”>xy</Username>
					<BookingCode xsi:type=”xsd:string”>QTGPDF</BookingCode>
					<ErrorCode xsi:type=”xsd:string”>CANCEL0005</ErrorCode>
					<ErrorMessage xsi:type=”xsd:string”>Invalid PNR status.</ErrorMessage>
				</return>
			</ns1:WsCancelPNRResponse>	
		</SOAP-ENV:Body>
	</SOAP-ENV:Envelope>
"""
print(json.dumps(xml2dict.parse(x)))

selamat mencoba 🙂