Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 8ca4c2d9 authored by CAMPION Sebastien's avatar CAMPION Sebastien
Browse files

Initial commit

parents
No related branches found
No related tags found
No related merge requests found
.idea
include *.md
recursive-include allgo
import os, logging
import time
try:
from urllib.parse import urlparse, urlencode
from urllib.request import urlopen, Request
from urllib.error import HTTPError
except ImportError:
from urlparse import urlparse
from urllib import urlencode
from urllib2 import urlopen, Request, HTTPError
import requests
log = logging.getLogger('allgo')
__version__ = '0.1.4'
class App:
"""
AllGo app submission object
"""
def __init__(self, name, token=None):
"""
Constructor
:param name: name of the application in lower case
:param token: if not provided, we check ALLGO_TOKEN env variable and notebook parameters
"""
self.name = name
self.token = token if token else os.environ.get('ALLGO_TOKEN', None)
def run(self, files, outputdir='.', params=''):
"""
Submit the job
:param files: input files
:param outputdir: by default current directory
:param params: a string parameters see the application documentation
:return:
"""
headers = {'Authorization': 'Token token={}'.format(_token)}
data = {"job[webapp_name]": self.name,
"job[param]": params}
ALLGO_URL = os.environ.get('ALLGO_URL', "https://allgo.inria.fr")
r = requests.post('%s/api/v1/jobs' % ALLGO_URL, headers=headers, files=files, data=data)
r.raise_for_status()
jobid = r['id']
results = None
while True:
r = requests.get('{}/api/v1/jobs/{}'.format(ALLGO_URL, jobid), headers=headers)
r.raise_for_status()
results = r.json()
status = results['status']
if status == 'in progress': # 'in progress', 'done', 'error', 'timeout'
log.info("wait for job %s", jobid)
time.sleep(2)
else:
break
if status != 'done':
raise Exception('Job %s failed with status %s', (jobid, status))
elif status == 'done' and results:
for filename, url in results[jobid].items:
filepath = os.path.join(outputdir, filename)
with open(filepath, 'wb') as fb:
fb.write(requests.get(url, stream=True).content)
setup.py 0 → 100644
from setuptools import setup, find_packages
import allgo
setup(
name='allgo',
version=allgo.__version__,
packages=find_packages(),
author="Sebastien Campion",
author_email="sebastien.campion@inria.fr",
description="AllGo client module",
long_description=open('README.md').read(),
include_package_data=True,
url='https://gitlab.inria.fr/allgo/client',
classifiers=[
"Programming Language :: Python",
"Development Status :: 1 - Planning",
"License :: OSI Approved",
"Natural Language :: French",
"Operating System :: OS Independent",
"Programming Language :: Python :: 2.7",
"Topic :: Communications",
],
license="AGPL",
)
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment