python3 urllib.request.urlopen timeout error - urllib2

i have script witch gets data from site. First i wrote it in 2.7 python and its works.
When i rewrite it to python3 i have problem.
In python2.7 that works fine
for x in xrange(len(ll.string2)-1):
psR = urllib2.urlopen(ll.string2[x]).read()
nrL = Przystanek()
nrL.feed(psR)
self.BusExtData += nrL.string2
python3
for x in range(len(ll.string2)-1):
psR = urllib.request.urlopen(ll.string2[x],timeout=3000).read().decode('iso-8859-2')
nrL = Przystanek()
nrL.feed(psR)
self.BusExtData += nrL.string2
Upper code generate timeout error.
i = 0
while i<(len(ll.string2)-1):
try:
psR = urllib.request.urlopen(ll.string2[i],timeout=3000).read().decode('iso-8859-2')
nrL = Przystanek()
nrL.feed(psR)
self.BusExtData += nrL.string2
i=i+1
except:
print("Error")
i=i-1
pass
I avoid this problem with upper case. But i dont know why urllib2.urlopen dont make timeout error. When i use urllib.request.urlopen i get this error message:
urllib.error.URLError:urlopen error timed out
or
urllib.error.URLError:urlopen error timed out [WinError 10060]
What is difference between urlib2.urlopen and urllib.request.urlopen?

Related

I got error from calling json() when trying to running

Hello i want asking somethin that i got when i tried to run my streamlit, so i got error like this on my frontend page, i import it from backend page:
i will show my code too
Predict = st.button('Predict Satisfacion Rate')
if Predict:
r = requests.post(URL, json=data)
res = r.json()
if res['code'] == 200:
res2 = (res['result']['description'])
if res2 == 'Not Satisfied':
st.markdown('**The Passenger is not Satisfied**')
col4,col5,col6 = st.columns([1,1,1])
with col5 :
st.image('Happy.jpg')
else:
st.markdown('**The Passenger is Satisfied**')
col7,col8,col9 = st.columns([1,1,1])
with col8 :
st.image('NotHappy.jpg')
else:
st.write('**Error**')
st.write(f"Details : {res['result']['description']}")
so how can i do to solve this error?
thank you.
In your code, the conversion res = r.json() is unnecessary. Unless you really need this as JSON somewhere else, you can test the status code directly from the r object as r.status_code.
After if r.status_code == 200:, you can then convert to JSON if you really need to, as you should be confident that the server returned a valid response.

Why I am getting SQL_NO_DATA_FOUND error while I am executing following code section?

CODE:
This code runs successfully on a Windows machine. But it isn't working on a Linux machine. It does not perform any operation.
ret = SQLFetch(hstmt)
if (ret == SQL_SUCCESS_WITH_INFO)
ret = SQL_SUCCESS;
When I execute this code, I get the error SQL_NO_DATA_FOUND. Why am I getting this error? what is SQLFetch() and what is its functionality?

Error while trying to run WordCount program using hadoop-yarn

When I am trying to run WordCount program on cluster node I am getting error as mentioned below. Can anyone suggest solution to this issue?
ava.io.IOException: Inconsistent checkpoint fields.
LV = -60 namespaceID = 1055173391 cTime = 0 ; clusterId = CID-5d8c37db-fb42-416f-a179-3e7ff1690690 ; blockpoolId = BP-1781828547-192.168.104.173-1443620560920.
Expecting respectively: -60; 1665606821; 0; CID-6ec1fbb1-3515-4eca-9f55-2dbe8417b7e5; BP-555346680-192.168.104.173-1443500187475.
at org.apache.hadoop.hdfs.server.namenode.CheckpointSignature.validateStorageInfo(CheckpointSignature.java:134)
at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.doCheckpoint(SecondaryNameNode.java:531)
at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.doWork(SecondaryNameNode.java:395)
at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode$1.run(SecondaryNameNode.java:361)
at org.apache.hadoop.security.SecurityUtil.doAsLoginUserOrFatal(SecurityUtil.java:412)
at org.apache.hadoop.hdfs.server.namenode.SecondaryNameNode.run(SecondaryNameNode.java:357)
at java.lang.Thread.run(Thread.java:745)

How do I catch SocketExceptions in MonkeyRunner?

When using MonkeyRunner, every so often I get an error like:
120830 18:39:32.755:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice] Unable to get variable: display.density
120830 18:39:32.755:S [MainThread] [com.android.chimpchat.adb.AdbChimpDevice]java.net.SocketException: Connection reset
From what I've read, sometimes the adb connection goes bad, and you need to reconnect. The only problem is, I'm not able to catch the SocketException. I'll wrap my code like so:
try:
density = self.device.getProperty('display.density')
except:
print 'This will never print.'
But the exception is apparently not raised all the way to the caller. I've verified that MonkeyRunner/jython can catch Java exceptions the way I'd expect:
>>> from java.io import FileInputStream
>>> def test_java_exceptions():
... try:
... FileInputStream('bad mojo')
... except:
... print 'Caught it!'
...
>>> test_java_exceptions()
Caught it!
How can I deal with these socket exceptions?
You will get that error every odd time you start MonkeyRunner because the monkey --port 12345 command on the device isn't stopped when your script stops. It is a bug in monkey.
A nicer way to solve this issue is killing monkey when SIGINT is sent to your script (when you ctrl+c). In other words: $ killall com.android.commands.monkey.
Quick way to do it:
from sys, signal
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
device = None
def execute():
device = MonkeyRunner.waitForConnection()
# your code
def exitGracefully(self, signum, frame=None):
signal.signal(signal.SIGINT, signal.getsignal(signal.SIGINT))
device.shell('killall com.android.commands.monkey')
sys.exit(1)
if __name__ == '__main__':
signal.signal(signal.SIGINT, exitGracefully)
execute()
Edit:
as an addendum, I also found a way to notice the Java errors: Monkey Runner throwing socket exception broken pipe on touuch
Edit:
The signal seems to require 2 parameters, not sure it's always the case, made the third optional.
Below is the workaround I ended up using. Any function that can suffer from adb failures just needs to use the following decorator:
from subprocess import call, PIPE, Popen
from time import sleep
def check_connection(f):
"""
adb is unstable and cannot be trusted. When there's a problem, a
SocketException will be thrown, but caught internally by MonkeyRunner
and simply logged. As a hacky solution, this checks if the stderr log
grows after f is called (a false positive isn't going to cause any harm).
If so, the connection will be repaired and the decorated function/method
will be called again.
Make sure that stderr is redirected at the command line to the file
specified by config.STDERR. Also, this decorator will only work for
functions/methods that take a Device object as the first argument.
"""
def wrapper(*args, **kwargs):
while True:
cmd = "wc -l %s | awk '{print $1}'" % config.STDERR
p = Popen(cmd, shell=True, stdout=PIPE)
(line_count_pre, stderr) = p.communicate()
line_count_pre = line_count_pre.strip()
f(*args, **kwargs)
p = Popen(cmd, shell=True, stdout=PIPE)
(line_count_post, stderr) = p.communicate()
line_count_post = line_count_post.strip()
if line_count_pre == line_count_post:
# the connection was fine
break
print 'Connection error. Restarting adb...'
sleep(1)
call('adb kill-server', shell=True)
call('adb start-server', shell=True)
args[0].connection = MonkeyRunner.waitForConnection()
return wrapper
Because this may create a new connection, you need to wrap your current connection in a Device object so that it can be changed. Here's my Device class (most of the class is for convenience, the only thing that's necessary is the connection member:
class Device:
def __init__(self):
self.connection = MonkeyRunner.waitForConnection()
self.width = int(self.connection.getProperty('display.width'))
self.height = int(self.connection.getProperty('display.height'))
self.model = self.connection.getProperty('build.model')
def touch(self, x, y, press=MonkeyDevice.DOWN_AND_UP):
self.connection.touch(x, y, press)
An example on how to use the decorator:
#check_connection
def screenshot(device, filename):
screen = device.connection.takeSnapshot()
screen.writeToFile(filename + '.png', 'png')

Occasionally get "attempt to apply non-function" error when applying getForm

I'm using getForm to repeatedly pull data from an api. Sometimes the program finishes, and other times after some amount of iterations, I get the following error message:
Error in curlPerform(url = url, curl = curl, .opts = .opts) :
attempt to apply non-function
In addition: There were more than 50 warnings (use warnings() to see the first 50)
> traceback()
5: .Call("R_curl_easy_perform", curl, .opts, isProtected, .encoding,
PACKAGE = "RCurl")
4: curlPerform(url = url, curl = curl, .opts = .opts)
3: getURLContent(uri, .opts = .opts, .encoding = .encoding, binary = binary,
curl = curl)
2: getForm("https://xx", .params = parval)
1: fromJSON(getForm("https://xx",
.params = parval)) at #32
the warnings are:
In RCurlIconv(str, from = "C99", to = encoding) :
UTF-8 not supported iconv entries
Thanks for your help!
It's just a download error, sometimes the download fails. I just put in a provision to try the download again in that case.