Releases: procrastinate-org/procrastinate
0.30.0: Psycopg v3 compatibility
Migrations
https://github.com/procrastinate-org/procrastinate/tree/main/procrastinate/sql/migrations
Features
- Add psycopg3 compat (#863)
Kudos:
0.29.1: Open files with explicit encodings
0.30.0rc1: A preview of breaking changes to come in #753
Migrations
None
Breaking changes
#753 brings import changes to the way sync and async work in procrastinate.
-
We've tried to remove some place where we "seemlessly" executed async code from sync calls because it wasn't seemless at all. Most of the sync methods that are just wrappers over async methods with syntax sugar to avoid having to run the even loop yourself, have been removed. This means all the sync methods of
JobManager
andApp.check_connection
. TheAsyncConnector
subclasses don't support being called via sync methods anymore. The way to fix this if you were using it is to use async code when interacting with Procrastinate's systems (so from sync code, either useasyncio.run
orasgiref.sync.async_to_sync
and call async methods). -
The remaining methods on the sync API are:
Task.defer
which is implemented as a synchronous function and will stay that wayApp.run_worker
has been reimplemented on top ofApp.run_worker_async
. It uses its own event loop. This is probably the only case where it makes sense that Procrastinate provides a sync shortcut because it's a long-lived call. For all other async methods, trying to handle the event loop in Procrastinate is likely to cause more problem than it solves, whereas the caller is in a much better solution to solve it the right way as they're in control of the process they run the code from.- Providing your synchronous tasks for Procrastinate to run has a much better support now, thanks to
asgiref.sync.sync_to_async
.
Those are the 3 only part of the synchronous Procrastinate API that are left. We don't plan to remove them, and they're enough to get almost all of the nice things of procrastinate in your sync project. If Procrastinate doesn't drastically change in the future, there's no reason we'd want to add more sync stuff.
-
Due to dropping Click in favor of argparse for async reasons, some commands that accepted parameter in any order now don't. It should be mainly mixing positional CLI args and flags: you used to be able to do
procrastinate defer x --unknown {}
and now you'll have to put all positional args first:procrastinate defer x {} --unknown
. I can't guarantee that there won't be other subtle breaks around this (e.g. environment variable support). That said, if you discover a change, feel free to open a ticket, if it's easily fixable, we might fix it. -
You may have issues if you call
App.open
right after creating the app.- Ideally, open the app only in the context where you know you'll be using it (in a given process, you'll likely either use the sync app or the async app, not both, so try to open only the one you'll use)
- Ideally, try to open the app at the start of the process and close it at the end. It might not be easy to find the exact right place to do so, but we'll try to give some advice. For Django, for example, that might be an
AppConfig.ready()
andatexit
(from the standard lib). YMMV. - For app configured with a sync connectors, use
app.open()
andapp.close()
(orwith app.open()
). With an async connector, useawait app.open_async()
andawait app.close_async()
orasync with app.open_async()
. Callingapp.open()
on an async app is not supported anymore.
Dependencies
- Lock file maintenance (#856)
- Lock file maintenance (#853)
- Bump urllib3 from 2.0.6 to 2.0.7 (#851)
- Lock file maintenance (#850)
- Update Deps with major upgrades to v2 (major) (#847)
- Lock file maintenance (#848)
- [pre-commit.ci] pre-commit autoupdate (#849)
Kudos:
@dependabot, @dependabot[bot], @ewjoachim, @pre-commit-ci, @pre-commit-ci[bot], @renovate and @renovate[bot]
0.29.0
Migrations
None
Breaking change
- When a job ends with an exception, but it's retried, instead of logging the exception at "ERROR" level, it logs as "INFO" level. (#845)
Dependencies
- #841, #843, #840, #839, #836, #835, #834, #825, #832, #831, #830, #828, #829, #827, #826, #824, #822, #820, #819, #842, #837,
#833, #823
Kudos:
0.28.0
Migrations
None
Breaking changes
- Drop Py3.7, upgrade deps (#805)
Documentation & code annotations
- Update blueprints annotations (#787)
- Update middleware docs (#754)
- Add complete details on how to integrate with Django (#745)
- Update cron.rst (#750)
- Readme: Additional contributors (#749)
- Update README.rst (#744)
- Fix doc links (#743)
- Fix code of conduct url in README.rst (#730)
Dependencies
- Update dependency flake8 to v6 (#817)
- Update dependency importlib-resources to v6.0.1 (#815)
- Update dependency psycopg2-binary to v2.9.7 (#814)
- Update dependency Sphinx to v7.1.2 (#813)
- Update dependency django to v4.2.4 (#812)
- Update dependency Sphinx to v7.1.1 (#808)
- Update dependency tomlkit to v0.12.1 (#807)
- Update dependency tomlkit to v0.12.0 (#806)
- Update Deps with major upgrades (major) (#794)
- Lock file maintenance (#797)
- Update Deps with major upgrades (major) (#791)
- Lock file maintenance (#792)
- Bump sqlparse from 0.4.3 to 0.4.4 (#776)
- Bump requests from 2.28.2 to 2.31.0 (#790)
- Update Deps with major upgrades (major) (#784)
- Update Deps with major upgrades (major) (#783)
- Update Deps with minor upgrades (#782)
- Update Deps with major upgrades (major) (#770)
- Update Deps with minor upgrades to v2.0.12 (#781)
- Update Deps with minor upgrades (#779)
- Update dependency importlib-metadata to v6.6.0 (#777)
- Update Deps with minor upgrades (#775)
- Update dependency importlib-metadata to v6.4.1 (#773)
- Update dependency sphinx-autodoc-typehints to v1.23.0 (#772)
- Update dependency croniter to v1.3.14 (#769)
- Update Deps with major upgrades (major) (#758)
- Update dependency importlib-metadata to v6.2.1 (#768)
- Update Deps with minor upgrades to v1.3.10 (#767)
- Update Deps with minor upgrades to v2.0.9 (#766)
- Update Deps with minor upgrades (#765)
- Update dependency black to v23.3.0 (#764)
- Update dependency tomlkit to v0.11.7 (#762)
- Update dependency pytest-asyncio to v0.21.0 (#760)
- Update Deps with minor upgrades (#759)
- Update Deps with minor upgrades (#757)
- Bump django from 3.2.17 to 3.2.18 (#739)
- Lock file maintenance (#734)
- Update Deps with major upgrades (major) (#666)
- Bump django from 3.2.16 to 3.2.17 (#733)
- Lock file maintenance (#731)
- Lock file maintenance (#727)
- Lock file maintenance (#725)
- [pre-commit.ci] pre-commit autoupdate (#804)
- [pre-commit.ci] pre-commit autoupdate (#802)
- [pre-commit.ci] pre-commit autoupdate (#798)
- [pre-commit.ci] pre-commit autoupdate (#796)
- [pre-commit.ci] pre-commit autoupdate (#793)
- [pre-commit.ci] pre-commit autoupdate (#789)
- [pre-commit.ci] pre-commit autoupdate (#778)
- [pre-commit.ci] pre-commit autoupdate (#763)
- [pre-commit.ci] pre-commit autoupdate (#761)
- [pre-commit.ci] pre-commit autoupdate (#756)
- [pre-commit.ci] pre-commit autoupdate (#741)
- [pre-commit.ci] pre-commit autoupdate (#738)
- [pre-commit.ci] pre-commit autoupdate (#732)
Kudos:
@adibsaad, @mininao, @paulzakin and @turicas 👏
0.27.0: Fixing importlib compatibility
Migrations
None
Breaking changes
When using Python < 3.9
, Procrastinate is not compatible anymore with importlib_resources < 1.4
(#724)
Dependencies
- [pre-commit.ci] pre-commit autoupdate (#723, #716, #714, #712, #709, #706, #701, #697, #692)
- Lock file maintenance (#721, #717, #715, #713, #711, #707, #705, #703, #700, #699, #696, #694, #691)
- Bump certifi from 2022.9.24 to 2022.12.7 (#710)
- Update fountainhead/action-wait-for-check action to v1.1.0 (#693)
Miscellaneous
- Fix GitHub Actions badge (#720)
0.26.0: Fix metadata
0.25.2: Re-fixing the deploy workflow
Migrations
None
Changelog
- This time, the Deploy workflow will work!
0.25.1: friendly error for get_full_path failures
0.25.0: Mostly shenanigans
Migrations
None
Bugfixes
- SQL Alchemy integrity Error (& hole in coverage) (#642)
- Use typing_extensions only if Python < 3.8 (#656)
Documentation
- Document usage of Sentry with Procrastinate (#647)
- Clarify
schedule_in
docstring (#595) - Fix link in readme (#640)
Dependencies shenaningans
There should be much less noise in the future thanks to Renovate.
- use setup-python v4 (#638, #639)
- Revert changes to the deploy workflow (#578)
- Sync pre-commit and poetry (#650)
- Use Renovate instead of Dependabot (#648, #634, #629, #628, #627, #619, #632, #636)
- Dependabot (#616, #617, #618, #614, #613, #610, #611, #612, #600, #601, #602, #603, #604, #596, #597, #598, #599, #594, #593, #589, #588, #590, #582, #583, #584, #585, #579, #580)
- Pre-commit CI (#654, #643, #631, #615, #608, #607, #591, #587, #581, #575)
- Renovate (#655, #653, #652, #635, #625, #622, #624, #621)
- Clear CI cache by updating deps (#641)
Kudos:
Thank you @abe-winter for multiple contributions! 🎉
Thank you @pmav99 for a first public PR ever in this repo! 🎉