Closed yugangzhang closed 9 years ago
What is the error you are getting? Most likely because our environments are in python 3+ and carchivetools supports Python >=2.6, <3.0 (>= 2.7 required for Appliance). carchivetools uses twisted for its backend and twisted is not fully supported for python 3. Try this alternative if you absolutely need the archiver until we come up with a solution: https://github.com/NSLS-II/channelarchiver PS: This module only works with legacy archiver (not archiver appliance)
@arkilic Thanks! That should be reason that I can't install on python 3+. I am trying to use channelarchiver.
Getting archiver appliance is already among our goals. Closing the duplicate request.
@yugangzhang take a look at this notebook. This will get you the data out of the archiver appliance without carchivetools.
http://nbviewer.ipython.org/gist/arkilic/a9a44272a72681b89e29
CHX doesn’t have archiver appliance installed yet. Leon is in the process of installing that at the beamlines. CSX and LIX have it , XPD and SRX are next in line. in doubt ask Leon. Annie
On Nov 16, 2015, at 5:43 PM, Arman Arkilic notifications@github.com<mailto:notifications@github.com> wrote:
@yugangzhanghttps://github.com/yugangzhang take a look at this notebook. This will get you the data out of the archiver appliance without carchivetools.
http://nbviewer.ipython.org/gist/arkilic/a9a44272a72681b89e29
— Reply to this email directly or view it on GitHubhttps://github.com/NSLS-II/wishlist/issues/84#issuecomment-157210745.
The archiver appliance installation is irrelevant. According to @klauer they are trying to access the accelerator archiver appliance for beam current. The method I showed in the notebook is the only way we have in to access archiver appliance data in Python 3.
Thanks, @arkilic, but I can't open your http://nbviewer.ipython.org/gist/arkilic/a9a44272a72681b89e29
It says:
404 : Not Found
You are requesting a page that does not exist!
The remote resource was not found.
Pasted the wrong link, I was trying to catch the train :) : http://nbviewer.ipython.org/gist/arkilic/1d6bd9c1cbe3749de0cc
Thanks @arkilic I can open your notebook now. But, by using your code,
import datetime
import simplejson as json
from urllib3.request import urlencode
import urllib3
import matplotlib.pyplot as plt
%matplotlib inline
ARCHIVER = 'http://xf11id-ca.cs.nsls2.local/cgi-bin/ArchiveDataServer.cgi'
dt1 = dict(year=2015, month=10,day=5, hour=10, minute=9, second=10)
dt2 = dict(year=2015, month=11,day=10, hour=10, minute=9, second=10)
params = urlencode({'pv':'XF:11IDA-UT{Cryo:1}T:05-I',
'from': datetime.datetime(**dt1).isoformat()+str('Z'),
'to': datetime.datetime(**dt2).isoformat()+str('Z')})
http = urllib3.PoolManager()
url = ARCHIVER + 'retrieval/data/getData.json?' + params
req = http.request('GET', url)
data = json.loads(req.data)
I got:
---------------------------------------------------------------------------
JSONDecodeError Traceback (most recent call last)
<ipython-input-15-d0f9f59816f7> in <module>()
19 url = ARCHIVER + 'retrieval/data/getData.json?' + params
20 req = http.request('GET', url)
---> 21 data = json.loads(req.data)
/home/yuzhang/Repos/simplejson/simplejson/__init__.py in loads(s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, use_decimal, **kw)
514 parse_constant is None and object_pairs_hook is None
515 and not use_decimal and not kw):
--> 516 return _default_decoder.decode(s)
517 if cls is None:
518 cls = JSONDecoder
/home/yuzhang/Repos/simplejson/simplejson/decoder.py in decode(self, s, _w, _PY3)
368 if _PY3 and isinstance(s, binary_type):
369 s = s.decode(self.encoding)
--> 370 obj, end = self.raw_decode(s)
371 end = _w(s, end).end()
372 if end != len(s):
/home/yuzhang/Repos/simplejson/simplejson/decoder.py in raw_decode(self, s, idx, _w, _PY3)
398 elif ord0 == 0xef and s[idx:idx + 3] == '\xef\xbb\xbf':
399 idx += 3
--> 400 return self.scan_once(s, idx=_w(s, idx).end())
JSONDecodeError: Expecting value: line 1 column 1 (char 0)
My json.version is '3.8.1'.
But anyway, I can use "from channelarchiver import Archiver; " to read our archive data. Our current problem is: https://github.com/NSLS-II/Bug-Reports/issues/60 .
The problem is not the code. The issue is you are trying to access the legacy archiver, not the archiver appliance. Your request returns no data, hence the Json error. In the bug report, you are trying to access the accelerator archiver. In your trial above, you are trying to access your local archiver. In order to get the ring current from the accelerator archiver appliance, you need the archiver appliance url(obv different than listed in that report). FYI, the issue in the bug report is not related to the Python library. It's due to the immense number of indexes on the server side. glad you can use the local archiver
I got it. Thanks!
I failed to install carchive on chx beamline under either collection or analysis environment months ago. I remembered that there was a compiling problem. carchive: https://github.com/NSLS-II/carchivetools.git
Anyone help to install it?