Sample Async Http Request Use Asyncio

asynchronous adalah kendali yang akan kembali ke user tanpa menunggu proses masukan dan keluaran selesai sehingga tidak terjadi waktu tunggu.

proses ini dapat kita implementasikan pada saat kita melakukan scrapping pada sebuah website. bagai cara implementasinya ?, perhatikan sample di bawah ini

import asyncio
import requests
 
 
async def main():
    loop = asyncio.get_event_loop()
    future1 = loop.run_in_executor(None, requests.get, 'http://www.lionair.co.id/')
    future2 = loop.run_in_executor(None, requests.get, 'http://www.lionair.co.id/')
    future3 = loop.run_in_executor(None, requests.get, 'http://www.lionair.co.id/')
    future4 = loop.run_in_executor(None, requests.get, 'http://www.lionair.co.id/')
    future5 = loop.run_in_executor(None, requests.get, 'http://www.lionair.co.id/')
    future6 = loop.run_in_executor(None, requests.get, 'http://www.lionair.co.id/')
    response1 = await future1
    response2 = await future2
    response3 = await future3
    response4 = await future4
    response5 = await future5
    response6 = await future6
    print(response1.text)
    print(response2.text)
    print(response3.text)
    print(response4.text)
    print(response5.text)
    print(response6.text)
 
 
loop = asyncio.get_event_loop()
lopppp = loop.run_until_complete(main())

dengan asyncio kita dapat mengurangi waktu tunggu sebuah response

 

Atomic Transaction Django

atomic transaction django

Python Django

Django secara default menjalankan mode autocommit. Django menggunakan savepoint secara otomatis untuk menjamin integritas operasi ORM yang memerlukan banyak query, terutama delete () dan update () queries. Django juga membungkus setiap TestCase dalam transaksi karena alasan kinerja.

penggunaan atomic transaction pada django perlu melakukan import library transaction

from django.db import transaction
from django.db import transaction
with transaction.atomic():
       account = (
           cls.objects
           .select_for_update()
           .get(id=id)
       )
 
       if account.balance < amount:
           raise errors.InsufficentFunds()
       account.balance -= amount
       account.save()

 

 

Change Local Time Zone Using Pytz

change time zone using pytz

python

Saat kita berinteraksi dengan server cloud. aplikasi yang menggunakan library datetime perlu kita ubah default timezonenya. salah satu modul yang bisa kita pakai pada bahasa pemrograman python adalah Pytz.

bagaimana cara menggunakanya ?

install terlebih dahulu jika library tersebut belum tersedia

pip install pytz

kemudian tentukan local timezone yang akan menjadi default dari sistem yang kita buat.

import pytz
from datetime import datetime
 
now = datetime.now()
localtz = pytz.timezone('Asia/Jakarta')
date_aware_la = localtz.localize(now).strftime("%Y-%m-%d %H:%M:%S")
 
print(date_aware_la)

Bagaimana cara mengubah menjadi unix time ?

gunakan mktime untuk mengubah menjadi unix time

import pytz
from datetime import datetime
 
now = datetime.now()
localtz = pytz.timezone('Asia/Jakarta')
date_aware_la = localtz.localize(now).strftime("%Y-%m-%d %H:%M:%S")
print(date_aware_la)
 
#change to unix time
source_time = time.strptime(date_aware_la, "%Y-%m-%d %H:%M:%S")
created_date_unix = time.mktime(source_time)
print(created_date_unix)

 

docs : http://pytz.sourceforge.net/

Simple Web Scraping Using Python

web scraping using python

Web scraping adalah teknik yang digunakan untuk mengambil isi sebuah halaman web secara spesifik, misalnya link gambar, isi berita atau sejenisnya.

kali ini kita akan mencoba mengambil source sebuah halaman web dengan library requests. pada web scraping ada 2 hal yang perlu kamu siapkan

pertama, url tujuan yang akan kamu ambil sourcodenya

kedua, user-agent header. kamu bisa menggunakan google chrome ataupun mozila.

perhatikan sample di bawah ini

import requests
 
class Scraper(object):
 
    @classmethod
    def scrapy(cls):
        urls = {
            'home': 'https://www.tiket.com/',
        }
 
        headers = {
            'User-Agent': 'User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2683.0 Safari/537.36',
            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
            'Accept-Encoding': 'gzip, deflate, sdch',
            'Accept-Language': 'en-US,en;q=0.8',
            'Connection': 'keep-alive'
        }
 
        s = requests.Session()
        r_search = s.get(urls['home'], headers=headers, timeout=10000)
        return r_search.text
 
print(Scraper.scrapy())

sample code diatas akan mendowload source home page dari tiket.com, silahkan kembangkan lebih lanjut untuk hal yang lain.

 

good luck!

Save File to Amazon Simple Storage Service (s3)

Teknologi media penyimpanan data saat ini telah berkembang begitu cepat. untuk media penyimpanan cloud salah satu yang paling populer adalah Amazon S3.

Bagaimana cara mengupload file ke Amazon s3 dengan memanfaatkan bahasa pemrograman python ?

pada python kita bisa memanfaatkan library boto yang dapat kamu pelajari secara lengkap di sini

install boto dengan pip pada python, sample codenya seperti di bawah ini

import boto
from boto.s3.key import Key
from boto.s3.connection import S3Connection
 
#Amazon Settings
AWS_ACCESS_KEY_ID = 'XCKHOKSKSJDF7'
AWS_SECRET_ACCESS_KEY = 'GHK98723KLKKKK'
 
filename ='rahasia.pdf'
saved_full_file_path = "d:\rahasia.pdf"
 
conn = S3Connection(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
bucket = conn.get_bucket('assets-fanther')
 
AWS_ACL = 'public-read'
AWS_HEADERS = {
		'Cache-Control':'max-age=31556926,public'
	}
 
k = Key(bucket)
k.key = 'backup/' + filename
 
k.set_contents_from_filename(saved_full_file_path,headers=AWS_HEADERS,replace=False,policy=AWS_ACL)

good luck