Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Make the library thread-safe, allowing concurrent connections. Fixes #4#5

Closed
dylanahsmith wants to merge 2 commits into
Shopify:masterShopify/shopify_python_api:masterfrom
dylanahsmith:thread-safedylanahsmith/shopify_python_api:thread-safeCopy head branch name to clipboard
Closed

Make the library thread-safe, allowing concurrent connections. Fixes #4#5
dylanahsmith wants to merge 2 commits into
Shopify:masterShopify/shopify_python_api:masterfrom
dylanahsmith:thread-safedylanahsmith/shopify_python_api:thread-safeCopy head branch name to clipboard

Conversation

@dylanahsmith

Copy link
Copy Markdown
Contributor

@csaunders for review

Thread-local storage is used to store the connection and variables used to
set up the connection object. This allows multiple threads to concurrently
make API requests for different shops.

The user, password, site and timeout properties are used to change
their respective thread-local variables, but they will also set the
class variables _user, _password, _site and _timeout remain for
backwards compatibility. These class variables are used as default
values when the thread-local value has not been set, allowing the
main thread to set up these default values before creating other
threads. All thread-local values are set as soon as the connection object
is created in a thread, through the connection property, to avoid
further interference between threads.

The _format variable was not make thread-local in the same way because
currently only XML is supported, and the ActiveResource class in
pyactiveresource accesses cls._format in a few places where it
should refer to the cls.format property. This makes localizing it
more difficult until pyactiveresource is fixed.

…hopify#4

Thread-local storage is used to store the connection and variables used to
set up the connection object. This allows multiple threads to concurrently
make API requests for different shops.

The user, password, site and timeout properties are used to change
their respective thread-local variables, but they will also set the
class variables _user, _password, _site and _timeout remain for
backwards compatibility. These class variables are used as default
values when the thread-local value has not been set, allowing the
main thread to set up these default values before creating other
threads. All thread-local values are set as soon as the connection object
is created in a thread, through the connection property, to avoid
further interference between threads.

The _format variable was not make thread-local in the same way because
currently only XML is supported, and the ActiveResource class in
pyactiveresource accesses cls._format in a few places where it
should refer to the cls.format property. This makes localizing it
more difficult until pyactiveresource is fixed.
@masom

masom commented Feb 14, 2012

Copy link
Copy Markdown

Oh this is awesome! Can now use CherryPy :D

Comment thread lib/shopify/base.py Outdated

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

forgot a newline?

@csaunders

Copy link
Copy Markdown

👍

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

Morty Proxy This is a proxified and sanitized view of the page, visit original site.