Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
595 commits
Select commit Hold shift + click to select a range
4b8142f
Fix a few notes
tannermiller-wf Aug 13, 2013
c1dc667
Merge pull request #107 from tannermiller-wf/async_task_insertion
Oct 2, 2013
1d7b098
Ensure task batches are not greater than 100
ericolson-wf Oct 18, 2013
6374f85
Merge pull request #113 from ericolson-wf/100tasks
beaulyddon-wf Oct 19, 2013
9220a46
Exclude example directory from setup
tylertreat-wf Oct 21, 2013
ebf1906
Merge pull request #114 from tylertreat-wf/setup_fix
beaulyddon-wf Oct 21, 2013
8b4c19b
Update setup.py
beaulyddon-wf Oct 25, 2013
54ec509
Fix rednose versioning.
lyddonb Aug 29, 2013
2eee7b0
New function in queues.py for running tasks in queues randomly. Incl…
mattsanders-wf Nov 6, 2013
2449af5
Updating doc strings and minor test change.
mattsanders-wf Nov 6, 2013
10a96df
Merge pull request #115 from mattsanders-wf/test_stub_random_runner
Nov 13, 2013
fb16c89
Update setup.py to 0.9.2
Nov 14, 2013
3dc2c4d
Make `make test` run both unit and integration tests
Dec 13, 2013
76ff3f7
Switch async.py from relative to absolute imports
Dec 13, 2013
46cc221
Convert batcher.py to absolute imports
Dec 13, 2013
bdc46af
Convert job_utils.py to absolute imports
Dec 13, 2013
0756ed0
Convert processors.py to absolute imports
Dec 13, 2013
1007870
Switch furious.context to absolute imports
Dec 13, 2013
55d1e59
Kill coverage on integration tests
Dec 13, 2013
8e8d8db
Update handlers to use absolute imports
Dec 13, 2013
e39bc02
In test, only tasks with async urls are run.
jasonaguilon-wf Jan 15, 2014
ca4bfc7
Merge pull request #116 from jasonaguilon-wf/test-stub-fix
beaulyddon-wf Jan 15, 2014
3c9cff3
_execute_task unit test for non async url
jasonaguilon-wf Jan 16, 2014
7928db4
missing logging import for queues.py
jasonaguilon-wf Jan 16, 2014
e2c33f1
Merge pull request #118 from jasonaguilon-wf/test-stub-fix
beaulyddon-wf Jan 16, 2014
30d4c8f
Update setup.py to 0.9.4
beaulyddon-wf Jan 16, 2014
f729bcd
Merge branch 'master' of github.com:WebFilings/furious into better_te…
beaulyddon-wf Jan 17, 2014
64857f1
Add the ability to filter non furious task urls and a handler for them
beaulyddon-wf Jan 17, 2014
935d3a9
Add logging when using custom handler
beaulyddon-wf Jan 17, 2014
f14cbfb
Fix typo in non_furious_hanlder
beaulyddon-wf Jan 17, 2014
418e069
Merge pull request #119 from beaulyddon-wf/better_test_runner
beaulyddon-wf Jan 29, 2014
e68ebda
Update setup.py
beaulyddon-wf Jan 29, 2014
625be9e
Merge branch 'master' of wfgithub:WebFilings/furious into absolute_im…
Mar 12, 2014
cdc075a
Convert ExecutionContext to absolute import of Async
Mar 12, 2014
55c8c7b
Merge pull request #121 from WebFilings/absolute_imports
Mar 12, 2014
3447604
In persist mode, call _persist_result when result set
Mar 12, 2014
6d54af2
Drop newline
Mar 12, 2014
81d6b84
Merge pull request #122 from WebFilings/capture_mode
Mar 19, 2014
c5b46f9
Switch Async tests to importing mock module
robertkluin Mar 27, 2014
da8cc33
Add unit tests for Async result persist logic
robertkluin Mar 27, 2014
594b1b3
Make line length shorter
robertkluin Mar 27, 2014
52906e1
Add support for unique id to Async
robertkluin Mar 27, 2014
f122826
Make sure that passing id to update_options works as expected
robertkluin Mar 27, 2014
6d75240
Merge pull request #123 from WebFilings/async-id
beaulyddon-wf Mar 28, 2014
4fd72fe
Improve Context id generation and unit tests
Mar 31, 2014
88df06e
Add unit test to ensure an Async only generates one id
Mar 31, 2014
35373fc
Rearrange default _process_results function
Mar 31, 2014
4b13fc9
Make Context call persist after task insertion
Mar 31, 2014
36b6f65
Fix tests_stubs tests
ericolson-wf Mar 31, 2014
6f50255
Add "enable_retries" to run_queue()
ericolson-wf Mar 31, 2014
8f50e3f
Make sure to increment the eta
ericolson-wf Apr 1, 2014
797dbb5
More comprehensive test for retries
ericolson-wf Apr 1, 2014
f4ace79
Fix bool docstrings
ericolson-wf Apr 1, 2014
37adff2
Split result processing logic out from run_job
Apr 1, 2014
fcc32c5
Add event hook for context check complete call
Apr 2, 2014
01e7270
Readd param description to docstrings
ericolson-wf Apr 2, 2014
1133665
Add param docstrings for the two new functions
ericolson-wf Apr 2, 2014
9f5dff4
Add the containing Context.id to each contained Async
Apr 9, 2014
b8d2216
Merge pull request #124 from ericolson-wf/add_retries_to_test_runner
beaulyddon-wf Apr 12, 2014
3748e4b
Correct _parse_yaml_config's handling of empty string
Apr 16, 2014
5f57afa
Add a simple example of using Context callbacks
Apr 24, 2014
e58310e
Update Async to support specifying a context checker
Apr 24, 2014
1c10667
Add unit test for correct _context_checker encoding
Apr 28, 2014
e0b7623
Pass whole Async to context checker
May 7, 2014
50ce93b
Add unit test for Async context checker encoding/decoding
May 7, 2014
db68eee
Add property to get context_id to Async
May 8, 2014
fd46372
Add simple ndb_persitence Context storage model
May 8, 2014
e605051
Update store_context signature to pass in the Context
May 8, 2014
adf05b5
Add simple store_context function to ndb_persistence
May 8, 2014
84a21d7
Add missing logging import to ndb_persistence
May 8, 2014
0c6adf4
Add some helpful logging to ndb_persistence
May 8, 2014
34ed9e7
Add internal persist marker function to Async
May 8, 2014
8c85e9d
Make Context.task_ids into a Python property
May 8, 2014
8dcfb8e
Add simple Async Marker logic to ndb_persistence engine
May 8, 2014
bad1b8b
Add simple context completion checker to ndb persistence
May 8, 2014
9477eef
Set context checker on Asyncs if defined on Context
May 8, 2014
69732e2
Add infrastructure for Context events
May 8, 2014
22952f5
Make ndb_persistence execute Context's complete event
May 8, 2014
9f33644
Call persist_marker for Async jobs
May 8, 2014
94003bb
Remove persist marker logic from Async
May 8, 2014
301241c
Implement marker persistence in ndb persistence engine
May 8, 2014
95d1c18
Add cleanup FuriousAsyncMarker logic to ndb persistence engine
May 8, 2014
727fb30
Add the id property to the Message object
beaulyddon-wf May 9, 2014
0210db4
Switch the context id on an Async to be passed in via the options or …
beaulyddon-wf May 9, 2014
7f8f9df
Add transactional complete write before callbacks
rosshendrickson-wf May 12, 2014
3ffcc2b
Improve mark complete
rosshendrickson-wf May 12, 2014
9b9d395
Cover race condition where marker has been deleted
rosshendrickson-wf May 12, 2014
165e8e5
Add initial persistence logic
beaulyddon-wf May 13, 2014
c70be3d
Add some tweaks from the PR
beaulyddon-wf May 13, 2014
1ac1e98
Fix broken tests, clean up APIs and add comments
beaulyddon-wf May 13, 2014
f4f1b38
Merge branch 'context-completion-persist-results' into completion_int…
rosshendrickson-wf May 14, 2014
8541d4f
Handle post merge errors
rosshendrickson-wf May 14, 2014
200ed07
Add back in inserting tasks external to the tx
rosshendrickson-wf May 14, 2014
540652a
Clean up whitespace and doc strings
rosshendrickson-wf May 14, 2014
460259e
Add tests for ndb_persistence
beaulyddon-wf May 14, 2014
0960406
Add apache header to test_ndb_persistence
beaulyddon-wf May 14, 2014
d469aa0
Switch to batch method that doesn't require a filter
beaulyddon-wf May 14, 2014
53bf729
Merge branch 'context-completion-persist-results' into completion_int…
rosshendrickson-wf May 14, 2014
c4aa3c9
Address cr comments in async.py
rosshendrickson-wf May 14, 2014
7af0475
Address cr comments in context.py
rosshendrickson-wf May 14, 2014
07315d6
Address comments from cr to ndb_persistence.py
rosshendrickson-wf May 14, 2014
97df3d8
Update results example based on cr
rosshendrickson-wf May 14, 2014
10e62b8
Address comments from cr for simple example.
rosshendrickson-wf May 14, 2014
3fabd5d
Remove Test ndb model from test
rosshendrickson-wf May 16, 2014
b0ff84d
Clean up test spacing
rosshendrickson-wf May 16, 2014
9d0d01c
Move context persist into the task process
rosshendrickson-wf May 16, 2014
5d8e75c
Add in update_options for context_id in async.py
rosshendrickson-wf May 19, 2014
c71b51b
Add in early return if no context_id exists
rosshendrickson-wf May 19, 2014
97794da
Add in patch of transactional complete to test
rosshendrickson-wf May 19, 2014
f83e67c
Async the actual completion check
rosshendrickson-wf May 19, 2014
2f58efb
Update tests to handle asynced completion check
rosshendrickson-wf May 19, 2014
5b26386
Fix no persist completion example
rosshendrickson-wf May 19, 2014
efe20cf
Update example with error logging. Improve comment
rosshendrickson-wf May 27, 2014
002e990
Fix reference in Makefile
nicklenstra-wf May 28, 2014
7d7de66
Merge pull request #134 from rosshendrickson-wf/completion_integration
May 30, 2014
620687e
Merge pull request #126 from WebFilings/context-completion
May 30, 2014
3655a5f
Add get_async_with_context method
beaulyddon-wf Jun 1, 2014
f751fd1
Add current to get_current_async_with_context method
beaulyddon-wf Jun 1, 2014
020ac6f
Switch processor to use an AsyncResult
beaulyddon-wf Jun 4, 2014
73c9989
Add ContextResult and error tracking
beaulyddon-wf Jun 4, 2014
9b9be4a
Switch AsyncResult.result to payload and add to_dict method
beaulyddon-wf Jun 5, 2014
8881848
Tweak the test commands in the Makefile.
beaulyddon-wf Jun 5, 2014
ef836da
Merge pull request #137 from beaulyddon-wf/tweak_test_commands
beaulyddon-wf Jun 6, 2014
760cf13
Fix up error handling in AsyncResult
beaulyddon-wf Jun 6, 2014
9fbc785
Switch ContextResult to an abstract class
beaulyddon-wf Jun 9, 2014
103e727
Add test for failure in context results
beaulyddon-wf Jun 9, 2014
878bc1b
Add docstring to success property on AsyncResult
beaulyddon-wf Jun 9, 2014
806f058
Fix some spelling issues
beaulyddon-wf Jun 9, 2014
10e42ca
Merge pull request #1 from beaulyddon-wf/add_result_object
beaulyddon-wf Jun 11, 2014
0574deb
Merge pull request #136 from beaulyddon-wf/add_async_context_method
beaulyddon-wf Jun 11, 2014
71ced9f
Add limits example
tannermiller-wf Jun 16, 2014
289dae1
Allow AutoContexts to be created from context.new()
tylertreat Jun 20, 2014
8712f9b
Use AutoContext proper noun in docstrings to be more clear
tylertreat Jun 20, 2014
e7454bc
Merge pull request #139 from tylertreat/auto_add
beaulyddon-wf Jun 27, 2014
e579fce
Merge pull request #138 from tannermiller-wf/limits_tester
beaulyddon-wf Jun 27, 2014
264ad0a
Swithc furious to use _pkg_meta for version
beaulyddon-wf Jun 27, 2014
f43e3a1
Fix stupid in get_version
beaulyddon-wf Jun 27, 2014
cdace61
Merge pull request #140 from beaulyddon-wf/add_pky_meta_for_version
beaulyddon-wf Jun 27, 2014
6b1bc73
Update version to 1.0.0
beaulyddon-wf Jun 27, 2014
ca1a9f5
Ensure correct Async type is used for completion callbacks
tylertreat-wf Jul 11, 2014
46b6373
Fix unit test to verify correct Async type is used for callback
tylertreat Jul 14, 2014
eb3546f
Raise exception with correct traceback
tylertreat-wf Jul 21, 2014
ca98d6d
Merge pull request #145 from tylertreat-wf/fix_traceback
beaulyddon-wf Jul 22, 2014
a7b0da3
Merge pull request #142 from tylertreat/completion_cb_fix
beaulyddon-wf Jul 22, 2014
33a863c
completion_retry - If a marker/context is already complete, re-execut…
markshaule-wf Jul 22, 2014
d70758c
Revert "completion_retry - If a marker/context is already complete, r…
markshaule-wf Jul 24, 2014
7ca3e8b
completion_retry - Update Marker to complete and submit completion ha…
markshaule-wf Jul 24, 2014
6f46105
Merge pull request #146 from markshaule-wf/completion_retry
beaulyddon-wf Jul 25, 2014
7389170
Update version to 1.1.0
beaulyddon-wf Jul 25, 2014
c8f5e07
Add parent id and request id to Async
beaulyddon-wf Jul 29, 2014
232471e
Switch _function_path to just return function_path
beaulyddon-wf Jul 29, 2014
3bddc91
Fix stupid property bug
beaulyddon-wf Jul 29, 2014
f32c341
Merge pull request #147 from beaulyddon-wf/add_parent_id_to_asyncs
beaulyddon-wf Jul 31, 2014
13195a9
Bump docutils to 0.12
aaronkavlie-wf Aug 7, 2014
64e8b75
Correct/clarify App Engine .pth instructions; generally improve doc b…
aaronkavlie-wf Aug 7, 2014
cbcb706
transient_error_retry - Retry transient errors when attempting to ins…
markshaule-wf Sep 30, 2014
f7b8b0e
First pass of queue inheritance
rosshendrickson-wf Sep 30, 2014
20029e5
Example of context queue inheritance
rosshendrickson-wf Sep 30, 2014
280ba76
Merge pull request #149 from aaronkavlie-wf/master
beaulyddon-wf Oct 6, 2014
22967e5
Merge pull request #155 from markshaule-wf/transient_error_retry
beaulyddon-wf Oct 6, 2014
0bbe07d
Only reinsert tasks which were not enqueued
tylertreat Oct 11, 2014
8a94a37
Add more doc string context for example
rosshendrickson-wf Oct 16, 2014
9750dc5
Enable configuration of completion queues & delay
rosshendrickson-wf Oct 16, 2014
792e4c1
Use more standard Env manipulation in testing
rosshendrickson-wf Oct 16, 2014
879dfa9
Update queue.yaml to remove uneeded queue
rosshendrickson-wf Oct 16, 2014
1474158
Remove commented out code
rosshendrickson-wf Oct 16, 2014
39c9ed8
Remove line in queue.yaml
rosshendrickson-wf Oct 16, 2014
0c1e8ec
Rework config to use standard default behavior
rosshendrickson-wf Oct 16, 2014
de39644
Add in completion config related tests
rosshendrickson-wf Oct 16, 2014
2be5506
Update test_queues to handle new queue.yaml
rosshendrickson-wf Oct 16, 2014
8218854
Merge pull request #157 from rosshendrickson-wf/inherit
beaulyddon-wf Oct 24, 2014
0a8873a
Merge pull request #156 from tylertreat/reinsert_fix
beaulyddon-wf Oct 24, 2014
0e82fc2
Updating to 1.2.0
beaulyddon-wf Oct 24, 2014
c2bef93
Fix the error callback example
rosshendrickson-wf Nov 6, 2014
5fbf584
Merge pull request #158 from rosshendrickson-wf/fix_example
beaulyddon-wf Nov 6, 2014
f9f4c7d
_insert_tasks now re-raises a TransientError, if user has specified t…
markshaule-wf Jan 7, 2015
32a7100
After a TransientError is raised, add a timed delay before attempting…
markshaule-wf Jan 7, 2015
647c4d3
Add retry_delay option for context retries, and Async.start() retries.
markshaule-wf Jan 8, 2015
684c0a2
transient error restart-remove 'time' inline imports.
markshaule-wf Jan 8, 2015
347735b
transient_error_retry_on_start - Always re-raise TransientError if tr…
markshaule-wf Jan 13, 2015
fd1e6b0
add an extra_task_info async option which is logged before task execu…
andreleblanc-wf Jan 14, 2015
2cf26be
Merge pull request #159 from andreleblanc-wf/DS-3373
beaulyddon-wf Jan 19, 2015
8ef8662
Merge branch 'master' of github.com:markshaule-wf/furious into transi…
markshaule-wf Jan 19, 2015
8f4b36f
Merge pull request #160 from markshaule-wf/transient_error_retry_on_s…
beaulyddon-wf Jan 19, 2015
78ec681
Upgrade the version to 1.3.0
beaulyddon-wf Jan 21, 2015
e363308
Merge pull request #161 from beaulyddon-wf/upgrade_version
beaulyddon-wf Jan 21, 2015
646ae45
insert_tasks_ignore_duplicates - New _insert_tasks_ignore_duplicate_n…
markshaule-wf Jan 22, 2015
2b1d296
insert_tasks_ignore_duplicate_names - Moved insert function to new fi…
markshaule-wf Jan 22, 2015
c6db68e
insert_tasks_ignore_duplicate_names - cleanup imports in test_insert_…
markshaule-wf Jan 23, 2015
2da744b
insert_tasks_ingore_duplicate_names - No need to catch DuplicateTaskN…
markshaule-wf Jan 23, 2015
ac1875c
Add info needed to add Furious to the public pypi
beaulyddon-wf May 1, 2015
4b375f0
changed /_ah/queue/async to /_furious/async
shawnrusaw-wf Jun 1, 2015
7a800bd
changed _furious to _queue
shawnrusaw-wf Jun 1, 2015
560aa05
changed all the tests to use _queue
shawnrusaw-wf Jun 1, 2015
ca254bb
Update Webfilings info to Workiva
beaulyddon-wf Jun 2, 2015
312eb77
Merge pull request #164 from shawnrusaw-wf/moving_furious_tasks_to_di…
beaulyddon-wf Jun 2, 2015
06beebd
Merge pull request #162 from markshaule-wf/insert_tasks_ignore_duplic…
beaulyddon-wf Jun 2, 2015
016c404
Merge pull request #163 from beaulyddon-wf/add_public_pypi_info
beaulyddon-wf Jun 2, 2015
837df00
Update the version to 1.4.0 for the latest release
beaulyddon-wf Jun 2, 2015
c724a0d
Merge pull request #165 from beaulyddon-wf/update_version
beaulyddon-wf Jun 2, 2015
ebb4bab
Update processors.py
rosshendrickson-wf Jun 11, 2015
d8006b3
Update examples to have the correct furious handler
rosshendrickson-wf Jun 11, 2015
e24faa4
Merge pull request #166 from rosshendrickson-wf/patch-1
beaulyddon-wf Jun 23, 2015
d6fceb0
Merge branch 'master' into fix_examples
rosshendrickson-wf Jun 24, 2015
6f67daf
Merge pull request #167 from rosshendrickson-wf/fix_examples
beaulyddon-wf Jun 24, 2015
bbf1fd6
@defaults decorator has moved; update docs.
brianneal-wf Aug 21, 2015
78ee1fa
Merge pull request #169 from brianneal-wf/defaults_doc_fix
beaulyddon-wf Aug 21, 2015
5792fb3
encode / decode _process_results
andreleblanc-wf Sep 10, 2015
10d749d
Merge pull request #170 from andreleblanc-wf/encode-results-processor
beaulyddon-wf Oct 8, 2015
4257910
Update the version to 1.5.0 to prepare for next release
beaulyddon-wf Oct 12, 2015
a0f5687
Merge pull request #171 from beaulyddon-wf/update_version_1_5_0
beaulyddon-wf Oct 12, 2015
dfa8ad0
Async subclasses can now decorate their target functions
jasonaguilon-wf Nov 4, 2015
c03bb74
Merge pull request #173 from jasonaguilon-wf/decorate-job
beaulyddon-wf Nov 13, 2015
a117520
Some README cleanups.
brianneal-wf Jan 11, 2016
5779c2d
Fix tests using non-existent Mock method.
brianneal-wf Jan 11, 2016
d4d34c1
Merge pull request #174 from brianneal-wf/readme_cleanups
beaulyddon-wf Jan 11, 2016
6693734
In the run_job function, trigger the error handler for exceptions tha…
markshaule-wf Feb 4, 2016
4db57a9
Merge pull request #175 from markshaule-wf/deadlineexceedederror_hand…
beaulyddon-wf Feb 5, 2016
c847834
Update the _pkg_meta to 1.6.0
lyddonb May 26, 2016
013fed4
Merge pull request #177 from Workiva/update_version_to_1_6_0
beaulyddon-wf May 26, 2016
28e0e1b
RED-659: create aviary.yaml for repos with existing configs
Oct 13, 2016
e68a738
Update the travis configuration
lyddonb Jan 24, 2017
26fdfdb
Add teh fetch_gae_sdk script
lyddonb Jan 24, 2017
9b364c9
Merge pull request #179 from beaulyddon-wf/fix-travis
rosshendrickson-wf Jan 24, 2017
e848c95
Merge branch 'master' into fix_make_file
lyddonb Jan 24, 2017
ede40c0
Merge pull request #178 from infosec-wf/RED_659_add_aviary_yaml
beaulyddon-wf Jan 24, 2017
b9a2f78
Merge pull request #180 from beaulyddon-wf/fix_make_file
rosshendrickson-wf Jan 25, 2017
c86ac0a
Warn about arguments needing to be json-serializable
patkujawa-wf Mar 9, 2017
a416429
Explain why furious doesn't support pickling
patkujawa-wf Mar 9, 2017
c29823e
Merge pull request #181 from patkujawa-wf/patch-1
beaulyddon-wf Mar 9, 2017
2681dc4
RED-5083 - Testing deploy
matthewbelisle-wf Jun 23, 2022
a9dfaa9
RED-5083 - Adding empty requirements.txt
matthewbelisle-wf Jun 23, 2022
243fa31
Merge pull request #184 from matthewbelisle-wf/RED-5083
rmconsole4-wk Jun 23, 2022
343576e
Adding pypi publish workflow
matthewbelisle-wf Jun 27, 2022
47bf0f1
Bumping version
matthewbelisle-wf Jun 27, 2022
117ddbc
Merge pull request #185 from matthewbelisle-wf/RED-5091
matthewbelisle-wf Jun 27, 2022
e85e414
Fixing github action syntax
matthewbelisle-wf Jun 27, 2022
b9f92b7
Fixing name
matthewbelisle-wf Jun 27, 2022
1705ad1
Merge pull request #186 from matthewbelisle-wf/RED-5091-2
matthewbelisle-wf Jun 27, 2022
e1a4f2d
Building package first
matthewbelisle-wf Jun 28, 2022
dd483d8
Merge pull request #187 from matthewbelisle-wf/RED-5091-3
rmconsole7-wk Jun 28, 2022
863be66
RED-5108 - Check taskqueue ip address
matthewbelisle-wf Jul 5, 2022
8ec0c02
RED-5108 - Changing to 403
matthewbelisle-wf Jul 5, 2022
1bef6e4
RED-5108 - Better logging
matthewbelisle-wf Jul 5, 2022
bd25601
RED-5108 - Fixing import error
matthewbelisle-wf Jul 5, 2022
add5ae0
RED-5108 - Bumping version
matthewbelisle-wf Jul 5, 2022
179af8c
Merge pull request #188 from matthewbelisle-wf/RED-5108
rmconsole5-wk Jul 5, 2022
c8fd005
Move imports inside of csrf_check
patkujawa-wf Jul 5, 2022
9469575
Bump version
patkujawa-wf Jul 5, 2022
af4d2a5
Merge pull request #189 from Workiva/Move-imports-inside-of-csrf_check
rmconsole4-wk Jul 6, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: Publish to pypi
on: [push]
jobs:
Publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: 2.x
- name: Install dependencies
run: >-
python -m pip install --user --upgrade setuptools wheel
- name: Build
run: >-
python setup.py sdist bdist_wheel
- name: Publish package
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
20 changes: 20 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,22 @@
.coverage
.noseids
.build
*.pyc

\#*\#
.idea
gaepdb.py
*.xml

# for sphinx documentation
doc/build/*
doc/source/*
!doc/source/conf.py
!doc/source/index.txt
!doc/source/design*.txt
!doc/source/_static/*
!doc/source/_templates/*

bilobac
dist/
furious.egg-info/
30 changes: 21 additions & 9 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,27 @@
sudo: false
language: python
python:
- "2.7"
- "2.7"

# Setup the GAE SDK.
before_script:
- wget http://googleappengine.googlecode.com/files/google_appengine_1.7.4.zip -nv
- unzip -q google_appengine_1.7.4.zip
# Cache our Gcloud SDK between commands
cache:
directories:
- "$HOME/google-cloud-sdk/"

# command to install dependencies
install: "pip install -r requirements.txt --use-mirrors"
env:
# Make sure gcloud command is on our PATH and the App Engine SDK is in the Python path
- GAE_PYTHONPATH=${HOME}/.cache/google_appengine PATH=$PATH:${HOME}/google-cloud-sdk/bin PYTHONPATH=${PYTHONPATH}:${GAE_PYTHONPATH} CLOUDSDK_CORE_DISABLE_PROMPTS=1

# command to run tests
script: nosetests --gae-lib-path=./google_appengine
before_install:
# Install Google App Engine Python SDK
- if [ ! -d "${GAE_PYTHONPATH}" ]; then
python scripts/fetch_gae_sdk.py $(dirname "${GAE_PYTHONPATH}");
fi

install:
- pip install -r requirements_dev.txt

script:
- nosetests --gae-lib-path=./google_appengine --with-coverage
- python setup.py sdist
- pip install .
32 changes: 32 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
SHELL := /bin/bash
PYTHON := python
PIP := pip

BUILD_DIR := .build

clean:
find . -name "*.py[co]" -delete
rm -f .coverage

distclean: clean
rm -rf $(BUILD_DIR)

run: deps
dev_appserver.py .

deps: py_dev_deps

py_dev_deps: $(BUILD_DIR)/pip-dev.log

$(BUILD_DIR)/pip-dev.log: requirements_dev.txt
@mkdir -p .build
$(PIP) install -Ur requirements_dev.txt | tee $(BUILD_DIR)/pip-dev.log

unit: clean
nosetests

integrations:
nosetests --logging-level=ERROR -a slow --with-coverage

test: clean integrations

29 changes: 22 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,20 +21,34 @@ Usage

In the simplest form, usage looks like:

from furious import Async
from furious.async import Async

# Create an Async object.
async = Async(
target="your.module.func",
args=("positstional", "args"),
kwargs={"kwargs": "too"})
args=("positional", "args"),
kwargs={"foo": "bar"})

# Tell the async to insert itself to be run.
async.start()

This inserts a task that will make the following call:

your.module.func("pos", "args", kwarg="too")
your.module.func("positional", "args", foo="bar")

**CAUTION**: Arguments **must** be json-serializable.
Contrast that with the [deferred lib](https://cloud.google.com/appengine/articles/deferred),
which allows any picklable type
(see [What can be pickled and unpickled?](https://docs.python.org/2/library/pickle.html#what-can-be-pickled-and-unpickled)).

Why did furious choose this limitation?
When a python object that is pickled gets moved in the code base,
attempts to unpickle it will blow up. Furious tasks can run on
different instances at a future time by which there may have
been a code deploy done. References:

* [Alex Gaynor: Pickles are for Delis, not Software - PyCon 2014 - YouTube](https://www.youtube.com/watch?v=7KnfGDajDQw&t=1292)
* [Don't Pickle Your Data](http://www.benfrederickson.com/dont-pickle-your-data/)


### Grouping async jobs
Expand All @@ -56,7 +70,8 @@ You can group jobs together,

It is possible to set options, like the target queue,

from furious import context, defaults
from furious import context
from furious.async import defaults

@defaults(queue='square')
def square_a_number(number):
Expand Down Expand Up @@ -89,7 +104,7 @@ Tasks targeted at the same queue will be batch inserted.

Contexts allow you to build workflows easily,

from furious import Async
from furious.async import Async
from furious.context import get_current_context, new

def square_a_number(number):
Expand Down Expand Up @@ -121,7 +136,7 @@ Contexts allow you to build workflows easily,

Asyncs and Contexts maybe nested to build more complex workflows.

from furious import Async
from furious.async import Async
from furious.context import new

def do_some_work(number):
Expand Down
15 changes: 15 additions & 0 deletions aviary.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
version: 1

exclude:
- tests?/

raven_monitored_classes: null

raven_monitored_files:
^furious/extras/xsrf.py$:
reason: CSRF protection helper methods

raven_monitored_functions: null

raven_monitored_keywords: null

153 changes: 153 additions & 0 deletions doc/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
# Makefile for Sphinx documentation
#

# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
PAPER =
BUILDDIR = build

# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source

.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext

help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " devhelp to make HTML files and a Devhelp project"
@echo " epub to make an epub"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run them through pdflatex"
@echo " text to make text files"
@echo " man to make manual pages"
@echo " texinfo to make Texinfo files"
@echo " info to make Texinfo files and run them through makeinfo"
@echo " gettext to make PO message catalogs"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"

clean:
-rm -rf $(BUILDDIR)/*

html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."

dirhtml:
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."

singlehtml:
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."

pickle:
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."

json:
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."

htmlhelp:
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."

qthelp:
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/furious.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/furious.qhc"

devhelp:
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
@echo
@echo "Build finished."
@echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/furious"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/furious"
@echo "# devhelp"

epub:
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."

latex:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make' in that directory to run these through (pdf)latex" \
"(use \`make latexpdf' here to do that automatically)."

latexpdf:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."

text:
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
@echo
@echo "Build finished. The text files are in $(BUILDDIR)/text."

man:
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
@echo
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."

texinfo:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
@echo "Run \`make' in that directory to run these through makeinfo" \
"(use \`make info' here to do that automatically)."

info:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo "Running Texinfo files through makeinfo..."
make -C $(BUILDDIR)/texinfo info
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."

gettext:
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
@echo
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."

changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."

linkcheck:
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."

doctest:
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."
33 changes: 33 additions & 0 deletions doc/how_to_build_docs.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
1. You must have a .pth file in your site-packages directory with
the path of your google_appengine sdk. For Unix environments just create a file here:

$VIRTUAL_ENV/lib/python2.7/site-packages/appengine.pth

with the path:

/usr/local/google_appengine


2. Install the requirements:

$ pip install -r doc/requirements.txt


3. Auto build doc source from project source (run from the doc directory):
(http://sphinx-doc.org/invocation.html#invocation-apidoc)
$ sphinx-apidoc -T -s txt -o source ../furious
$ sphinx-apidoc -T -s txt -o source ../example

to force rebuild the rsts, include -f:
(http://sphinx-doc.org/invocation.html)
$ sphinx-apidoc -T -f -s txt -o source ../furious
$ sphinx-apidoc -T -f -s txt -o source ../example


4. Build docs from source:
$ make html

Sometimes the docs don't update and you need to remove doc/build/doctrees:
$ rm -Rf build/doctrees


Loading