Commit Graph

253 Commits

Author SHA1 Message Date
e8a4692e0f Update README.md 2024-08-15 15:10:37 -05:00
49ae5a55d9 Add About window and basic commands to MenuBar (#113)
* Initial commit for about_window.py

* Add some basic actions to the MenuBar

* Fix keyboard shortcuts

* Fix path to icon for Windows
2024-08-15 14:27:29 -05:00
Brett Williams
d04d14446b Update main.spec to include version numbers on Windows 2024-08-15 11:41:36 -05:00
81e79a1996 Prevent subprocesses from constantly opening windows on Windows (#109)
* Add subprocess.CREATE_NO_WINDOW to blender_engine.py

* Convert ffmpeg_engine.py to use CREATE_NO_WINDOW

* Cleanup Blender implementation

* Cleanup subprocesses in base_worker.py

* Cleanup subprocesses in base_engine.py

* Fix main.spec for Windows (optimize=2 broke it)
2024-08-13 22:16:03 -05:00
Brett Williams
d30978bef0 Update main.spec for Windows support 2024-08-13 18:02:40 -05:00
e2333c4451 Fix processes not ending when stopped (#98)
* Fix processes not ending when stopped

* Fix error when removing a job

* Better error handling

* Refactored killprocess code and fixed windows support

* Improved error handling

* Add try to code that deletes project files

* Wait for the thread to finish after killing the process

* Don't try to stop process multiple times

* Misc cleanup
2024-08-13 11:16:31 -05:00
94a40c46dc Add output file count validation (#97)
* Worker file_list ignores hidden files

* Add frame-count validation logic
2024-08-11 13:00:54 -05:00
Brett Williams
8104bd4e86 Add logic to download button in main window 2024-08-11 11:59:40 -05:00
Brett Williams
33adcac592 Code refactoring 2024-08-11 11:54:15 -05:00
Brett Williams
d38e10ae9f Add tga, bmp, webp and webm to PreviewManager support 2024-08-10 21:23:06 -05:00
Brett Williams
19b01446ea Make renderer_info threaded again 2024-08-10 21:20:47 -05:00
e757506787 Parent creates local subjobs instead of truncating original (#95)
* Parent worker now creates subjob on local host and waits for it

* Improve wait_for_subjobs logic

* Fix setting end_time for base_worker

* API cleanup

* Code refactoring

* Cleanup
2024-08-10 21:19:01 -05:00
f9b51886ab Bugfix: Filter out corrupt engines by default (#94)
* Add main.spec

* Fix issue where fetching supported extensions would crash with no default installation

* Engines return version as 'error' if cannot determine version

* EngineManager will now filter out corrupted engine installs by default
2024-08-10 15:00:47 -05:00
3b33649f2d Pyinstaller support (#93)
* Add main.spec

* Fix issue where fetching supported extensions would crash with no default installation
2024-08-10 14:58:41 -05:00
51a5a63944 Use pubsub messages instead of a background thread to process changes (#92)
* Use pubsub messages instead of a background thread to process changes to the RenderQueue

* Misc logging improvements
2024-08-08 23:01:26 -05:00
3600eeb21b Refactor: Move all initialization logic out of api_server and into init (#91)
* Zeroconf logging improvements

* Ignore RuntimeErrors in background threads - Prevents issues during shutdown

* Migrate start up code from api_server.py to init.py

* Add error handlers to the API server to handle detached instances

* Integrate RenderQueue eval loop into RenderQueue object

* Silently catch RuntimeErrors on evaluate_queue

* Stop background queue updates in prepare_for_shutdown
2024-08-08 04:47:22 -05:00
6afb6e65a6 Integrate watchdog into render worker (#88)
* Add a watchdog to base_worker

* Logging cleanup

* Prevent multiple watchdogs from running if render process restarts

* Add process timeout parameter to Config

* Refactor

* Add error handling to process output parsing

* Fix issue where start_time was not getting set consistently
2024-08-06 10:48:24 -05:00
Brett Williams
90d5e9b7af Misc logging cleanup 2024-08-05 10:57:56 -05:00
4df41a2079 Download frames from subjobs as frames are completed (#87)
* Add a frame complete notification to BaseWorker and distributed_job_manager.py

* Add API to download individual files to API server and ServerProxy

* Rename subjob notification API and add download_missing_frames_from_subjob

* Subjobs will now notify parent when a frame is complete

* Fix missed rename

* Add some misc logging

* Better error handling

* Fix frame download file path issue

* Download missing frames at job completion and misc cleanup

* Misc cleanup

* Code cleanup
2024-08-04 21:30:10 -05:00
1cdb7810bf New PreviewManager to handle generating previews asynchronously (#86)
* Add PreviewManager

* Refactoring and better error handling

* Integrate PreviewManager into api_server.py

* Integrate PreviewManager into distributed_job_manager.py

* Add method to preview_manager.py to delete previews and integrate it into api_server

* Misc logging improvements

* Misc code cleanup

* Replace existing preview on job completion - Minor code fixes
2024-08-04 16:45:46 -05:00
Brett Williams
21011e47ca Fix issue where tests would never complete correctly 2024-08-04 11:48:36 -05:00
Brett Williams
86977b9d6d Fix issue where custom job name was being ignored 2024-08-04 11:47:56 -05:00
Brett Williams
220b3fcc25 Streamline job runtime - improve logging 2024-08-03 20:55:22 -05:00
82613c3963 Persist args in db and return args in job json (#82) 2024-08-03 18:42:21 -05:00
Brett Williams
abc9724f01 Quickfix: Forgot to commit one rename 2024-08-03 18:28:33 -05:00
ef4fc0e42e Blender GPU / CPU Render (#81)
* Add script to get GPU information from Blender

* Change run_python_script to allow it to run without a project file

* Simplify run_python_script code

* Fix mistake

* Add system_info to engine classes and api_server. /api/renderer_info now supports standard and full response modes.

* Get full renderer_info response for add job UI

* Enable setting specific Blender render_device using args

* Add Blender render device options to UI
2024-08-03 18:26:56 -05:00
Brett Williams
9bc490acae Misc cleanup / renaming 2024-08-03 14:04:17 -05:00
21de69ca4f Improve performance on several API calls (#80)
* Streamline fetching renderer_info from API - use threading for performance improvements

* Use concurrent.futures instead of Threading

* Fix timeout issue with server proxy

* Minor fixes to code that handles proxy server online / offline status
2024-08-03 11:02:40 -05:00
Brett Williams
47770c4fdd Update blender worker to get current frame from filepath output 2024-07-30 20:00:07 -05:00
8a3e74660c Create subjobs after submission - #54 (#79)
* Force start in render queue only starts NOT_STARTED and SCHEDULED jobs

* Refactor adding jobs / subjobs

* Remove dead code

* Fixed issue with bulk job submission

* Cancel job now cancels all subjobs

* Misc fixes

* JSON now returns job hostname

* Add hostname as optional column in DB

* Misc fixes

* Error handling for removing zip file after download

* Clean up imports

* Fixed issue where worker child information would not be saved
2024-07-30 19:22:38 -05:00
Brett Williams
6d33f262b3 Better error handling when posting a new job 2024-07-29 14:50:14 -05:00
a0729d71f1 Add long_polling_jobs to API (#78) 2024-02-13 13:11:56 -06:00
ecf836c235 Zeroconf offline-handling improvements (#77)
* Add benchmark.py

* Add cpu / disk benchmark APIs

* Add cpu_benchmark method to distributed_job_manager.py

* Do a better job of storing hostnames =

* Remove hostname from Zeroconf cache if server goes offline

* Add cpu / disk benchmark APIs

* Add cpu_benchmark method to distributed_job_manager.py

* Do a better job of storing hostnames =

* Remove hostname from Zeroconf cache if server goes offline

* Wrap main code in try finally block to always stop zeroconf

* Add missing import
2024-02-12 14:57:00 -06:00
a31fe98964 Cpu benchmarks #48 (#76)
* Add benchmark.py

* Add cpu / disk benchmark APIs

* Add cpu_benchmark method to distributed_job_manager.py

* Make sure cpu_benchmark is an int

* Improve distributed_job_manager test
2024-02-11 05:19:24 -06:00
Brett Williams
79db960383 Add MIT license 2024-01-28 20:54:12 -06:00
85785d9167 Check engine permissions and chmod it to executable if not already (#75) 2024-01-28 10:53:14 -06:00
9757ba9276 Pylint cleanup (#74)
* Misc fixes

* Misc cleanup

* Add all_versions to blender_downloader.py

* More cleanup

* Fix issue with status not reporting engine info

* Misc fixes

* Misc cleanup

* Add all_versions to blender_downloader.py

* More cleanup

* Fix issue with status not reporting engine info
2024-01-28 10:30:57 -06:00
d673d7d4bf Misc cleanup (#73)
* Stop previously running zeroconf instances

* Lots of formatting fixes

* Use f-strings for time delta

* More line fixes

* Update requirements.txt

* More misc cleanup

* Simplify README.md
2024-01-27 22:56:33 -06:00
Brett Williams
d216ae822e Merge remote-tracking branch 'origin/master' 2023-12-25 17:47:03 -06:00
Brett Williams
dabe46bdda Add .pylintrc 2023-12-25 17:46:45 -06:00
2c82c65305 Update pylint.yml
Update python versions
2023-12-25 17:40:55 -06:00
Brett Williams
4004ad893b Update .gitignore 2023-12-21 20:47:38 -06:00
Brett Williams
685297e2f2 Use alphanumeric API tokens instead of ints 2023-12-21 20:46:55 -06:00
d55f6a5187 Remove web components (#70)
* Remove old web code

* Add back missing gears file

* Client fetches thumbnails instead of being sent by server
2023-12-17 12:07:10 -06:00
Brett Williams
8863a38904 Add more docstrings 2023-12-16 22:23:02 -06:00
f663430984 Fix py2app (#69)
* Initial commit of py2app code

* Use environment variable RESOURCE_PATH when running as a bundle

* Move config files to system config location
2023-12-16 22:20:24 -06:00
525fd99a58 Ffmpeg versioning issues (#68)
* FFMPEG version cleanup

* Make sure attempts don't go on forever

* Use latest version when version not defined. Add latest to UI
2023-11-22 08:47:47 -08:00
Brett Williams
4847338fc2 Fix FFMPEG version regex 2023-11-22 07:48:28 -08:00
c0d0ec64a8 Dynamic engine options in UI for blender / ffmpeg (#66)
* Make sure progress UI updates occur on main thread

* Cleanup unnecessary code in FFMPEG

* Cleanup extension matching

* Make sure supported_extensions is now called as a method everywhere

* Fix add_job crashing

* Update the renderer to reflect the current file type

* Sort engine versions from newest to oldest

* Consolidate Project Group and Server Group

* Split UI options into its own file for easier updating

* Add ffmpeg ui stem
2023-11-21 01:31:56 -08:00
32afcf945d Use loopback address for local host (fixes issue with locked down networks) (#65) 2023-11-21 01:16:26 -08:00