summaryrefslogtreecommitdiff
path: root/python-procrastinate.spec
blob: 2fdc395745115697ec8f5e12d22d8a0c7bf7f9dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
%global _empty_manifest_terminate_build 0
Name:		python-procrastinate
Version:	0.27.0
Release:	1
Summary:	Postgres-based distributed task processing library
License:	MIT
URL:		https://procrastinate.readthedocs.io/
Source0:	https://mirrors.nju.edu.cn/pypi/web/packages/db/86/0065d484901942249ce41b2069bf22dbccc14d8bfc16e8d999941f72dc49/procrastinate-0.27.0.tar.gz
BuildArch:	noarch

Requires:	python3-aiopg
Requires:	python3-attrs
Requires:	python3-click
Requires:	python3-croniter
Requires:	python3-django
Requires:	python3-importlib-metadata
Requires:	python3-importlib-resources
Requires:	python3-psycopg2-binary
Requires:	python3-dateutil
Requires:	python3-sqlalchemy
Requires:	python3-typing-extensions

%description
Procrastinate is an open-source Python 3.7+ distributed task processing
library, leveraging PostgreSQL to store task definitions, manage locks and
dispatch tasks. It can be used within both sync and async code.
In other words, from your main code, you call specific functions (tasks) in a
special way and instead of being run on the spot, they're scheduled to
be run elsewhere, now or in the future.
Here's an example:
    # mycode.py
    import procrastinate
    # Make an app in your code
    app = procrastinate.App(connector=procrastinate.AiopgConnector())
    # Then define tasks
    @app.task(queue="sums")
    def sum(a, b):
        with open("myfile", "w") as f:
            f.write(str(a + b))
    with app.open():
        # Launch a job
        sum.defer(a=3, b=5)
        # Somewhere in your program, run a worker (actually, it's often a
        # different program than the one deferring jobs for execution)
        app.run_worker(queues=["sums"])
The worker will run the job, which will create a text file
named ``myfile`` with the result of the sum ``3 + 5`` (that's ``8``).
Similarly, from the command line:
    export PROCRASTINATE_APP="mycode.app"
    # Launch a job
    procrastinate defer mycode.sum '{"a": 3, "b": 5}'
    # Run a worker
    procrastinate worker -q sums
Lastly, you can use Procrastinate asynchronously too:
    import asyncio
    import procrastinate
    # Make an app in your code
    app = procrastinate.App(connector=procrastinate.AiopgConnector())
    # Define tasks using coroutine functions
    @app.task(queue="sums")
    async def sum(a, b):
        await asyncio.sleep(a + b)
    async with app.open_async():
        # Launch a job
        await sum.defer_async(a=3, b=5)
        # Somewhere in your program, run a worker (actually, it's often a
        # different program than the one deferring jobs for execution)
        await app.run_worker_async(queues=["sums"])
There are quite a few interesting features that Procrastinate adds to the mix.
You can head to the Quickstart section for a general tour or
to the How-To sections for specific features. The Discussion
section should hopefully answer your questions. Otherwise,
feel free to open an `issue <https://github.com/procrastinate-org/procrastinate/issues>`_.
The project is still quite early-stage and will probably evolve.
*Note to my future self: add a quick note here on why this project is named*
"Procrastinate_".

%package -n python3-procrastinate
Summary:	Postgres-based distributed task processing library
Provides:	python-procrastinate
BuildRequires:	python3-devel
BuildRequires:	python3-setuptools
BuildRequires:	python3-pip
%description -n python3-procrastinate
Procrastinate is an open-source Python 3.7+ distributed task processing
library, leveraging PostgreSQL to store task definitions, manage locks and
dispatch tasks. It can be used within both sync and async code.
In other words, from your main code, you call specific functions (tasks) in a
special way and instead of being run on the spot, they're scheduled to
be run elsewhere, now or in the future.
Here's an example:
    # mycode.py
    import procrastinate
    # Make an app in your code
    app = procrastinate.App(connector=procrastinate.AiopgConnector())
    # Then define tasks
    @app.task(queue="sums")
    def sum(a, b):
        with open("myfile", "w") as f:
            f.write(str(a + b))
    with app.open():
        # Launch a job
        sum.defer(a=3, b=5)
        # Somewhere in your program, run a worker (actually, it's often a
        # different program than the one deferring jobs for execution)
        app.run_worker(queues=["sums"])
The worker will run the job, which will create a text file
named ``myfile`` with the result of the sum ``3 + 5`` (that's ``8``).
Similarly, from the command line:
    export PROCRASTINATE_APP="mycode.app"
    # Launch a job
    procrastinate defer mycode.sum '{"a": 3, "b": 5}'
    # Run a worker
    procrastinate worker -q sums
Lastly, you can use Procrastinate asynchronously too:
    import asyncio
    import procrastinate
    # Make an app in your code
    app = procrastinate.App(connector=procrastinate.AiopgConnector())
    # Define tasks using coroutine functions
    @app.task(queue="sums")
    async def sum(a, b):
        await asyncio.sleep(a + b)
    async with app.open_async():
        # Launch a job
        await sum.defer_async(a=3, b=5)
        # Somewhere in your program, run a worker (actually, it's often a
        # different program than the one deferring jobs for execution)
        await app.run_worker_async(queues=["sums"])
There are quite a few interesting features that Procrastinate adds to the mix.
You can head to the Quickstart section for a general tour or
to the How-To sections for specific features. The Discussion
section should hopefully answer your questions. Otherwise,
feel free to open an `issue <https://github.com/procrastinate-org/procrastinate/issues>`_.
The project is still quite early-stage and will probably evolve.
*Note to my future self: add a quick note here on why this project is named*
"Procrastinate_".

%package help
Summary:	Development documents and examples for procrastinate
Provides:	python3-procrastinate-doc
%description help
Procrastinate is an open-source Python 3.7+ distributed task processing
library, leveraging PostgreSQL to store task definitions, manage locks and
dispatch tasks. It can be used within both sync and async code.
In other words, from your main code, you call specific functions (tasks) in a
special way and instead of being run on the spot, they're scheduled to
be run elsewhere, now or in the future.
Here's an example:
    # mycode.py
    import procrastinate
    # Make an app in your code
    app = procrastinate.App(connector=procrastinate.AiopgConnector())
    # Then define tasks
    @app.task(queue="sums")
    def sum(a, b):
        with open("myfile", "w") as f:
            f.write(str(a + b))
    with app.open():
        # Launch a job
        sum.defer(a=3, b=5)
        # Somewhere in your program, run a worker (actually, it's often a
        # different program than the one deferring jobs for execution)
        app.run_worker(queues=["sums"])
The worker will run the job, which will create a text file
named ``myfile`` with the result of the sum ``3 + 5`` (that's ``8``).
Similarly, from the command line:
    export PROCRASTINATE_APP="mycode.app"
    # Launch a job
    procrastinate defer mycode.sum '{"a": 3, "b": 5}'
    # Run a worker
    procrastinate worker -q sums
Lastly, you can use Procrastinate asynchronously too:
    import asyncio
    import procrastinate
    # Make an app in your code
    app = procrastinate.App(connector=procrastinate.AiopgConnector())
    # Define tasks using coroutine functions
    @app.task(queue="sums")
    async def sum(a, b):
        await asyncio.sleep(a + b)
    async with app.open_async():
        # Launch a job
        await sum.defer_async(a=3, b=5)
        # Somewhere in your program, run a worker (actually, it's often a
        # different program than the one deferring jobs for execution)
        await app.run_worker_async(queues=["sums"])
There are quite a few interesting features that Procrastinate adds to the mix.
You can head to the Quickstart section for a general tour or
to the How-To sections for specific features. The Discussion
section should hopefully answer your questions. Otherwise,
feel free to open an `issue <https://github.com/procrastinate-org/procrastinate/issues>`_.
The project is still quite early-stage and will probably evolve.
*Note to my future self: add a quick note here on why this project is named*
"Procrastinate_".

%prep
%autosetup -n procrastinate-0.27.0

%build
%py3_build

%install
%py3_install
install -d -m755 %{buildroot}/%{_pkgdocdir}
if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
pushd %{buildroot}
if [ -d usr/lib ]; then
	find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/lib64 ]; then
	find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/bin ]; then
	find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/sbin ]; then
	find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
fi
touch doclist.lst
if [ -d usr/share/man ]; then
	find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
fi
popd
mv %{buildroot}/filelist.lst .
mv %{buildroot}/doclist.lst .

%files -n python3-procrastinate -f filelist.lst
%dir %{python3_sitelib}/*

%files help -f doclist.lst
%{_docdir}/*

%changelog
* Tue May 30 2023 Python_Bot <Python_Bot@openeuler.org> - 0.27.0-1
- Package Spec generated