Skip to content

With newer versions of orjson, users need to specify the json engine explicitly (bug?) #3567

Closed

Description

@xucian

Hey

I found out I get an
AttributeError: partially initialized module 'orjson' has no attribute 'OPT_NON_STR_KEYS'
if I don't specify this
plotly.io.json.config.default_engine = 'orjson'
when using orjson v3.6.6 (latest as of 25jan2022)

Also, additional note for whoever might have this issue: you don't need to uninstall orjson if you don't want to use it. just set the engine to 'json' explicitly.

I'm using orjson because of the performance claims, although I ran some tests switching between the 2 engines and they seem to yield the same results: using go.Candlestick with 10000 candlesticks and some 4-5 indicators, getting ~0.8sec in each case for creating the plot. My purpose is to improve the dash server performace, but it seems it makes no difference (the web page still renders slower than the ticker even with 600 candles)

Activity

  1. HeddeCrisp commented on Jan 26, 2023

    @HeddeCrisp

    +1

  2. marcelo-ventura commented on Jan 31, 2024

    @marcelo-ventura

    +1. App is presenting problems after a while. Not sure what's going on.

  3. noamgot commented on Feb 11, 2024

    @noamgot

    +1. Happens to me when I use streamlit's st.plotly_chart (plotly v5.18.0)

  4. c0debeez commented on Feb 27, 2024

    @c0debeez

    File "/.venv/lib/python3.11/site-packages/plotly/io/_json.py", line 146, in to_json_plotly
    opts = orjson.OPT_NON_STR_KEYS | orjson.OPT_SERIALIZE_NUMPY

    This line of code may cause this issue

  5. ndrezn commented on Mar 28, 2024

    @ndrezn
    Contributor

    A fix may be using a regular import rather than using importlib to manage this package.

  6. assigned and unassigned on Mar 28, 2024
  7. ndrezn commented on Mar 28, 2024

    @ndrezn
    Contributor

    To reproduce using Dash:

    1. pip install orjson
    2. Make a Dash app
    3. Trigger reload

    If you look at network requests, it'll show this exact error.

  8. added and removed
    sev-3annoyance with workaround
    on Mar 28, 2024
  9. afeld commented on Dec 1, 2024

    @afeld
    Contributor

    Strangely, this error should have been fixed in Plotly v5.21.0, but I'm seeing it an environment with orjson v3.10.11. I'm not seeing it in other environments with the same version of Plotly with orjson v3.10.7 and v3.10.12. Neither the CHANGELOG nor diff suggest there was anything fixed in orjson around that setting from v3.10.11 to 3.10.12 🤨

  10. emilykl commented on Dec 2, 2024

    @emilykl
    Contributor

    Hi @afeld, thanks for the heads-up. I just did a quick test and I wasn't able to reproduce -- could you share replication steps, including your OS, Python version, and pip freeze of packages in your Python environment? If you can share that info I will try again to reproduce the issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugsomething brokensev-1blocker

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions