def on_post(self, request, response): falcon_log.info( 'Received POST request with params {}, trying to acquire data from Redis' .format(request.context['doc'])) webm_list = request.context['doc'] resp_data = [] try: for webm in webm_list: md5 = webm["md5"] url = webm["url"] webm_response = None webm_from_db = None webm_redis_info = get_cache(md5) if webm_redis_info is None: session = Session() # TODO: make one session instance webm_from_db = session.query(WEBM).get(md5) # If webm was in DB, return it if webm_from_db: DB_data = webm_from_db.to_dict() webm_response = DB_data set_cache(DB_data) else: if webm_redis_info == "delayed": webm_response = { "md5": md5, "message": "Уже анализируется" } elif isinstance(webm_redis_info, dict): webm_response = webm_redis_info elif is_valid_2ch_url(url) and webm_redis_info is None: analyse_video.delay(md5, url) falcon_log.info( 'Adding WEBM to task queue with url of {}'.format( url)) set_cache_delayed(md5) #print('Added task') webm_response = { "md5": md5, "message": "Добавлено в очередь на анализ" } else: webm_response = { "md5": md5, "message": "Неправильный url" } resp_data.append(webm_response) request.context['result'] = resp_data except Exception as e: response.status = status_codes.HTTP_400 request.context['result'] = {"message": "Неправильный запрос"} print("error:", e)
def on_get(self, request, response): falcon_log.info( 'Received GET request with params {}, trying to acquire data from Redis' .format(request.get_param_as_list('url'))) # print(request.get_param_as_list('url')) md5 = request.get_param('md5') url = request.get_param('url') response.set_header("Access-Control-Allow-Origin", "*") # print("Data from redis: ", webm_redis_info) webm_redis_info = get_cache(md5) # info from redis falcon_log.info('Data from redis: {}'.format(webm_redis_info)) webm = None # If no data in redis store, get it from DB if webm_redis_info is None: falcon_log.info('Getting data from DB') session = Session() webm = session.query(WEBM).get(md5) # If webm was in DB, return it if webm: DB_data = webm.to_dict() request.context['result'] = DB_data set_cache(DB_data) else: if webm_redis_info == "delayed": response.status = status_codes.HTTP_202 request.context['result'] = { "md5": md5, "message": "Уже анализируется" } elif isinstance(webm_redis_info, dict): response.status = status_codes.HTTP_200 request.context['result'] = webm_redis_info elif is_valid_2ch_url(url) and webm_redis_info is None: analyse_video.delay(md5, url) falcon_log.info( 'Adding WEBM to task queue with url of {}'.format(url)) set_cache_delayed(md5) #print('Added task') response.status = status_codes.HTTP_202 request.context['result'] = { "md5": md5, "message": "Добавлено в очередь на анализ" } else: # not valid url response.status = status_codes.HTTP_400 request.context['result'] = { "md5": md5, "message": "Неправильный запрос" }
import sys import caching import urllib import urllib2 import re import json from pyquery import PyQuery as p try: cache = caching.get_cache("tnrs") except: cache = {} def tnrs_lookup(name, TIMEOUT=10, CACHE=True): """ Look up "name" on the TNRS web service. If a most likely standard name can be identified, returns that name. Returns False if no or ambiguous result. """ name = name.replace("'", "").lower() if name in cache and CACHE: return cache[name] url = "http://tnrs.iplantc.org/tnrsm-svc/matchNames?retrieve=best&names=%s" # lookup canonical plant names on TNRS web service try: response = urllib2.urlopen(url % name.replace(" ", "%20"), timeout=TIMEOUT).read()
import sys import caching import urllib import urllib2 import re from pyquery import PyQuery as p try: cache = caching.get_cache('itis') except: cache = {} def itis_lookup(name, TIMEOUT=10, CACHE=True): ''' Look up "name" on itis.gov. If a standard name can be identified, returns that name. Returns False if no or ambiguous result. If a name matches multiple species that are all members of the same genus, itis_lookup will return "Genus sp1/sp2/sp3..." ''' name = name.replace("'", '').lower() if name in cache and CACHE: return cache[name] url = 'http://www.itis.gov/servlet/SingleRpt/SingleRpt' values = {'search_topic': 'all', 'search_kingdom':'every', 'search_span':'containing', 'search_value': name.decode(), 'categories':'All',