簡體   English   中英

導出SVG文件時無法到達Orca服務器

[英]Plotly cannot reach orca server when exporting svg file

我正在嘗試將繪圖直方圖導出到svg文件。 在我嘗試處理大量數據點之前,此方法效果很好。 下面的代碼適用於1000000個模擬數據點,但適用於1000萬個點。

import plotly.graph_objs as go
import plotly.io as pio

import numpy as np

# simulate small input data: this works
# data_1 = list(np.random.randint(0, 2**63, 1_000_000))
# data_2 = list(np.random.randint(0, 2**63, 1_000_000))

# simulate larger input data: this works
data_1 = list(np.random.randint(0, 2**63, 10_000_000))
data_2 = list(np.random.randint(0, 2**63, 10_000_000))

# assemble two histograms and plot them into one figure
g1 = go.Histogram(x=data_1, opacity=0.75)
g2 = go.Histogram(x=data_2, opacity=0.75)
data = [g1, g2]
figure = go.Figure(data=data)

# write the plot as html, this works
plotly.offline.plot(figure, auto_open=True, filename="/tmp/foo.html")

# writing the plot as svg (or png) file doesn't work
pio.write_image(figure, "/tmp/foo.svg")

如果使用10000000個模擬數據點運行,則會收到以下錯誤消息(下面的完整stacktrace):

ValueError: 
For some reason plotly.py was unable to communicate with the
local orca server process, even though the server process seems to be running.

問題是:使用我的真實數據集,我不能簡單地減少點數。 有誰知道,這是怎么回事,以及如何解決這個問題?

看起來有點像orca服務器超時,因為計算時間太長,但是服務器的超時時間(默認情況下)設置為None即沒有超時。 我也試圖改變服務器的端口(如建議在這里 ),但沒有幫助。


附加信息

我正在使用3.3.0和orca 1.1.1。 我的orca配置( print(pio.orca.config) )看起來像這樣:

orca configuration
------------------
    executable: orca
    port: None
    timeout: None
    default_width: None
    default_height: None
    default_scale: 1
    default_format: png
    mathjax: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js
    topojson: None
    mapbox_access_token: None

constants
---------
    plotlyjs: /home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/site-packages/plotly/package_data/plotly.min.js 
    config_file: /home/m00am/.plotly/.orca

全棧跟蹤

Traceback (most recent call last):
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py", line 600, in urlopen
    chunked=chunked)
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py", line 356, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/http/client.py", line 1239, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/http/client.py", line 1285, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/http/client.py", line 1234, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/http/client.py", line 1065, in _send_output
    self.send(chunk)
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/http/client.py", line 986, in send
    self.sock.sendall(data)
ConnectionResetError: [Errno 104] Connection reset by peer

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/site-packages/requests/adapters.py", line 423, in send
    timeout=timeout
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py", line 649, in urlopen
    _stacktrace=sys.exc_info()[2])
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/site-packages/requests/packages/urllib3/util/retry.py", line 347, in increment
    raise six.reraise(type(error), error, _stacktrace)
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/site-packages/requests/packages/urllib3/packages/six.py", line 685, in reraise
    raise value.with_traceback(tb)
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py", line 600, in urlopen
    chunked=chunked)
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/site-packages/requests/packages/urllib3/connectionpool.py", line 356, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/http/client.py", line 1239, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/http/client.py", line 1285, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/http/client.py", line 1234, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/http/client.py", line 1065, in _send_output
    self.send(chunk)
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/http/client.py", line 986, in send
    self.sock.sendall(data)
requests.packages.urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/site-packages/plotly/io/_orca.py", line 1305, in to_image
    height=height)
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/site-packages/retrying.py", line 49, in wrapped_f
    return Retrying(*dargs, **dkw).call(f, *args, **kw)
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/site-packages/retrying.py", line 212, in call
    raise attempt.get()
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/site-packages/retrying.py", line 247, in get
    six.reraise(self.value[0], self.value[1], self.value[2])
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/site-packages/six.py", line 693, in reraise
    raise value
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/site-packages/retrying.py", line 200, in call
    attempt = Attempt(fn(*args, **kwargs), attempt_number, False)
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/site-packages/plotly/io/_orca.py", line 1201, in request_image_with_retrying
    response = requests.post(server_url + '/', data=json_str)
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/site-packages/requests/api.py", line 110, in post
    return request('post', url, data=data, json=json, **kwargs)
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/site-packages/requests/api.py", line 56, in request
    return session.request(method=method, url=url, **kwargs)
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/site-packages/requests/sessions.py", line 488, in request
    resp = self.send(prep, **send_kwargs)
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/site-packages/requests/sessions.py", line 609, in send
    r = adapter.send(request, **kwargs)
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/site-packages/requests/adapters.py", line 473, in send
    raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "bar.py", line 107, in <module>
    distribution_comparison()
  File "bar.py", line 97, in distribution_comparison
    pio.write_image(figure, "/tmp/foo.png")
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/site-packages/plotly/io/_orca.py", line 1492, in write_image
    validate=validate)
  File "/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/site-packages/plotly/io/_orca.py", line 1322, in to_image
    """.format(info=status_str))
ValueError: 
For some reason plotly.py was unable to communicate with the
local orca server process, even though the server process seems to be running.

Please review the process and connection information below:

orca status
-----------
    state: running
    executable: /home/m00am/miniconda3/envs/my_conda_env/bin/orca
    version: 1.1.1
    port: 40887
    pid: 3277
    command: ['/home/m00am/miniconda3/envs/my_conda_env/bin/orca', 'serve', '-p', '40887', '--plotly', '/home/m00am/miniconda3/envs/my_conda_env/lib/python3.6/site-packages/plotly/package_data/plotly.min.js', '--graph-only', '--mathjax', 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js']

這看起來像是一個超時問題,不幸的是,orca的配置中的timeout參數與請求超時無關,該請求超時似乎在服務器源中進行了硬編碼。 您可以嘗試使用更大的requestTimeout構建orca或在存儲庫中提交問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM