microbuild fork
- Async executing on worker
- Time of executing of each task
- Better logging
- Logging with case thread-safe
- Task executing
- Arg parsing and cl interface (will add soon)
- Ignore task
import os
import shutil
import zipfile
import requests
from async_tasks.async_tasks import task, run
dir = './temp/'
def load_file(url, name):
response = requests.get(url, stream=True)
with open(dir + name, "wb") as handle:
handle.write(response.content)
return dir + name
@task()
def create_temp_dir(logger):
if not os.path.exists(dir):
logger("create temp dir")
os.makedirs(dir)
else:
logger("clear temp dir")
shutil.rmtree(dir)
os.makedirs(dir)
@task(create_temp_dir)
def load_logo(logger):
file_address = load_file("https://avatars1.githubusercontent.com/u/13404754?v=3&s=460", "punksta_logo.png")
return file_address
@task(create_temp_dir)
def load_content(logger):
file_address = load_file("https://raw.githubusercontent.com/punksta/async_tasks/master/example.py", "example.py")
return file_address
@task(load_content, load_logo)
def log_result(logger):
for name in [load_content.result, load_logo.result]:
logger(name + " loaded")
@task(load_content, load_logo)
def zip_result(logger):
zf = zipfile.ZipFile(dir + 'result.zip', mode='w')
logger("zip loaded files into" + dir + 'result.zip')
try:
zf.write(load_content.result)
zf.write(load_logo.result)
finally:
zf.close()
zipped = [load_content.result, load_logo.result]
return zipped
@task(log_result, zip_result)
def clear_files(logger):
logger('clear zipped files')
for file in zip_result.result:
os.remove(file)
pass
run(clear_files, 2)
output:
build started (log_result, zip_result, load_logo, load_content, create_temp_dir, clear_files) task log_result(load_content, load_logo) is added to queue task load_content(create_temp_dir) is added to queue task create_temp_dir is added to queue task create_temp_dir is started create_temp_dir: clear temp dir task create_temp_dir is completed in 0 seconds task load_logo(create_temp_dir) is added to queue task load_logo(create_temp_dir) is started task load_logo(create_temp_dir) is completed in 1 seconds task load_content(create_temp_dir) is started task load_content(create_temp_dir) is completed in 1 seconds task zip_result(load_content, load_logo) is added to queue task log_result(load_content, load_logo) is started log_result: ./temp/example.py loaded log_result: ./temp/punksta_logo.png loaded task log_result(load_content, load_logo) is completed in 0 seconds task zip_result(load_content, load_logo) is started zip_result: zip loaded files into./temp/result.zip task zip_result(load_content, load_logo) is completed in 0 seconds task clear_files(log_result, zip_result) is started clear_files: clear zipped files task clear_files(log_result, zip_result) is completed in 0 seconds build ended (log_result, zip_result, load_logo, load_content, create_temp_dir, clear_files) in 2 seconds Process finished with exit code 0
microbuild is licensed under a MIT license. See LICENSE.txt.