質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

614閲覧

wi-fiが途切れた時にrequests.get が停止する場合の対処について

mmorita

総合スコア21

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/05/26 09:08

編集2019/05/26 09:10

前提・実現したいこと

requests.getがwi-fiが一時的に詰まったことで処理が止まってしまった時に途中から再開する(requests.getをやり直す)方法があれば教えて頂きたいです。
内容としては,赤経赤緯(ra,dec)に合う天体をカタログから繰り返し引っ張ってくるもので、
カタログ検索の際にrequests.getを用いています。
これの実行中に一時的に回線状況が悪くなり処理が止まってしまい、検索がストップしたまま動かなくなっている状況だと考えています。

該当のソースコード

python3

1#%matplotlib inline 2import matplotlib 3import pandas as pd 4import glob 5import os 6import subprocess 7 8from astropy.io import ascii 9from astropy.table import Table, vstack 10 11import sys 12import re 13import numpy as np 14import pylab 15import json 16import requests 17 18try: # Python 3.x 19 from urllib.parse import quote as urlencode 20 from urllib.request import urlretrieve 21except ImportError: # Python 2.x 22 from urllib import pathname2url as urlencode 23 from urllib import urlretrieve 24 25try: # Python 3.x 26 import http.client as httplib 27except ImportError: # Python 2.x 28 import httplib 29 30 31 32# radec_listを取得 33directory = '/Users/usrname/target/' 34fitslist = glob.glob('%s/*.fits'%directory) 35 36files = [] 37for i in fitslist: 38 name = os.path.basename(i) 39 files.append(name) 40 41number_list = [] 42for filename in files: 43 name, ext = os.path.splitext(filename) 44 number = name.split(sep = '_')[1] 45 number_list.append(number) 46 47radec_file_list = [] 48for number in number_list: 49 radec_file = '%sfwhmlimit_radec.csv'%number 50 radec_file_list.append(radec_file) 51 52 53#ps1 catalog search Useful functions 54def ps1cone(ra,dec,radius,table="mean",release="dr2",format="csv",columns=None, 55 baseurl="https://catalogs.mast.stsci.edu/api/v0.1/panstarrs", verbose=False, 56 **kw): 57 """Do a cone search of the PS1 catalog 58 59 Parameters 60 ---------- 61 ra (float): (degrees) J2000 Right Ascension 62 dec (float): (degrees) J2000 Declination 63 radius (float): (degrees) Search radius (<= 0.5 degrees) 64 table (string): mean, stack, or detection 65 release (string): dr1 or dr2 66 format: csv, votable, json 67 columns: list of column names to include (None means use defaults) 68 baseurl: base URL for the request 69 verbose: print info about request 70 **kw: other parameters (e.g., 'nDetections.min':2) 71 """ 72 73 data = kw.copy() 74 data['ra'] = ra 75 data['dec'] = dec 76 data['radius'] = radius 77 return ps1search(table=table,release=release,format=format,columns=columns, 78 baseurl=baseurl, verbose=verbose, **data) 79 80 81def ps1search(table="mean",release="dr2",format="csv",columns=None, 82 baseurl="https://catalogs.mast.stsci.edu/api/v0.1/panstarrs", verbose=False, 83 **kw): 84 """Do a general search of the PS1 catalog (possibly without ra/dec/radius) 85 86 Parameters 87 ---------- 88 table (string): mean, stack, or detection 89 release (string): dr1 or dr2 90 format: csv, votable, json 91 columns: list of column names to include (None means use defaults) 92 baseurl: base URL for the request 93 verbose: print info about request 94 **kw: other parameters (e.g., 'nDetections.min':2). Note this is required! 95 """ 96 97 data = kw.copy() 98 if not data: 99 raise ValueError("You must specify some parameters for search") 100 checklegal(table,release) 101 if format not in ("csv","votable","json"): 102 raise ValueError("Bad value for format") 103 url = "{baseurl}/{release}/{table}.{format}".format(**locals()) 104 if columns: 105 # check that column values are legal 106 # create a dictionary to speed this up 107 dcols = {} 108 for col in ps1metadata(table,release)['name']: 109 dcols[col.lower()] = 1 110 badcols = [] 111 for col in columns: 112 if col.lower().strip() not in dcols: 113 badcols.append(col) 114 if badcols: 115 raise ValueError('Some columns not found in table: {}'.format(', '.join(badcols))) 116 # two different ways to specify a list of column values in the API 117 # data['columns'] = columns 118 data['columns'] = '[{}]'.format(','.join(columns)) 119 120# either get or post works 121# r = requests.post(url, data=data) 122 r = requests.get(url, params=data) 123 124 if verbose: 125 print(r.url) 126 r.raise_for_status() 127 if format == "json": 128 return r.json() 129 else: 130 return r.text 131 132# 実装 133for obs_number in range(radec_file_list): 134 radec_file = radec_file_list[i] 135 radec_table = pd.read_csv("%s%s"%(directory,radec_file_list[i])) 136 radius = 2.0/3600 # unit:deg 137 constraints = {'nDetections.gt':10} 138 columns_def = """objID,raMean,decMean,nDetections,ng,nr,ni,nz,ny, 139 gMeanApMag,rMeanApMag,iMeanApMag,zMeanApMag,yMeanApMag,gMeanApMagErr,rMeanApMagErr,iMeanApMagErr,zMeanApMagErr,yMeanApMagErr""" 140 columns = columns_def.split(',') 141 columns = [x.strip() for x in columns] 142 columns = [x for x in columns if x and not x.startswith('#')] 143 144 try: 145 del(result_table) 146 except NameError: 147 pass 148 149 for j in range(len(radec_table)): 150 # PS1_catalog search 151 ra_j =radec_table['ra'][j] 152 dec_j =radec_table['dec'][j] 153 results = ps1cone(ra_j,dec_j,radius,release='dr2',columns=columns,verbose=True,**constraints) 154 155

Useful functionについては以下のURLを参照します。
http://ps1images.stsci.edu/ps1_dr2_api.html

発生している問題・エラーメッセージ

ターミナル上のメッセージとしては

... https://catalogs.mast.stsci.edu/api/v0.1/panstarrs/dr2/mean.csv?nDetections.gt=10&ra=350.5376032&dec=25.0160406&radius=0.0005555555555555556&columns=%5BobjID%2CraMean%2CdecMean%2CnDetections%2Cng%2Cnr%2Cni%2Cnz%2Cny%2CgMeanApMag%2CrMeanApMag%2CiMeanApMag%2CzMeanApMag%2CyMeanApMag%2CgMeanApMagErr%2CrMeanApMagErr%2CiMeanApMagErr%2CzMeanApMagErr%2CyMeanApMagErr%5D https://catalogs.mast.stsci.edu/api/v0.1/panstarrs/dr2/mean.csv?nDetections.gt=10&ra=351.2536476&dec=25.0035516&radius=0.0005555555555555556&columns=%5BobjID%2CraMean%2CdecMean%2CnDetections%2Cng%2Cnr%2Cni%2Cnz%2Cny%2CgMeanApMag%2CrMeanApMag%2CiMeanApMag%2CzMeanApMag%2CyMeanApMag%2CgMeanApMagErr%2CrMeanApMagErr%2CiMeanApMagErr%2CzMeanApMagErr%2CyMeanApMagErr%5D did not matched

でストップしています。本来であれば

https://catalogs.mast.stsci.edu/api/v0.1/panstarrs/dr2/mean.csv?nDetections.gt=10&ra=351.2536476&dec=25.0035516&radius=0.0005555555555555556&columns=%5BobjID%2CraMean%2CdecMean%2CnDetections%2Cng%2Cnr%2Cni%2Cnz%2Cny%2CgMeanApMag%2CrMeanApMag%2CiMeanApMag%2CzMeanApMag%2CyMeanApMag%2CgMeanApMagErr%2CrMeanApMagErr%2CiMeanApMagErr%2CzMeanApMagErr%2CyMeanApMagErr%5D

が後に延々と続いていくのですが、ここで止まっており、途中でwi-fiが一瞬繋がらなくなったので、外部との接続が必要なps1corn関数(詳細にはrequsts.get)で詰まったと考えています。

試したこと

プログラムを中断/再開するため、ターミナル上で
Control + z (中断)
fg (再開)
を行いましたが、相変わらず進みません。
Control + c でプログラムを停止すればやり直せますが、いかんせん数時間かかるプログラムで、今どのループで停止しているか把握できていないため、なるべく途中から再開できる方法を見つけたいと思っているところです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

python

1r = requests.get(url, params=data) 2if r == "did not matched": 3 while not r == "did not matched": 4 r = requests.get(url, params=data)

とても汚いですがこれでどうでしょうか?

投稿2019/06/05 15:17

maru0123

総合スコア47

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問