Comments (13)
can you explain why it won’t work?
from saq.
First I add one job and let it run for a few seconds, then abort it and enqueue a new one with the same key. The log looks like this:
INFO:saq:Processing Job<...
INFO:saq:Finished Job<...
INFO:saq:Aborting saq:job...
There is no new Processing-line after the Aborting-line.
from saq.
can you give me a reproducible code snippet? it seems like you’re using key wrong. key is used to guarantee that there are no duplicate jobs. you probably shouldn’t use key
closing for now but if you provide a code snippet that i can repro it i’ll take a look.
from saq.
This is worker.py started with python3 -m saq worker.settings -v -v -v
import asyncio, os
from saq import Queue
import logging
logger = logging.getLogger("saq")
async def test(ctx):
logger.info('Starting job. sleeping for 10 seconds')
await asyncio.sleep(10)
logger.info('Done sleeping')
queue = Queue.from_url(os.getenv('REDIS'))
settings = {
"queue": queue,
"functions": [test],
"concurrency": 2
}
And this is used to add jobs. Run it twice in a row:
import asyncio, os
from saq import Job, Queue
async def main():
queue = Queue.from_url(os.getenv('REDIS'))
job = await queue.job('test')
if job:
print('Aborting')
await queue.abort(job, 'New build task added')
print('Adding task')
await queue.enqueue(Job(key='test', function='test'))
if __name__ == "__main__":
asyncio.run(main())
from saq.
how quickly are you running it twice in a row? the abort has a 5 second ttl
from saq.
Immediately after the first add I run the second add
from saq.
there’s a 5 second window where you can’t readd something you aborted, it’s an option in the abort method
from saq.
Ok I see. What is your suggestion on how to do this? Set ttl to 0? Or some other way?
from saq.
ttl 0 won’t work because then it won’t get aborted. i suggest not using a key.
from saq.
I use the key so that I can find the job to see if there is already an ongoing job, and abort it. If it's a random id, I'd have to store that Job id someplace and keep track of that. Unless there is some other way to loop through all future jobs and check their arguments or something.
from saq.
then you need to check that a job is actually aborted before enqueuing the next job
from saq.
How do you mean I can check that? Can you give me an example?
from saq.
check the job status
from saq.
Related Issues (20)
- duplicate jobs displayed in monitor
- Beginners ask for help HOT 1
- May I ask the experts how the 【swept】 error is caused? How to Troubleshooting? HOT 1
- cronjob is not respecting current timezone HOT 1
- cron jobs running at millisecond interval in tests HOT 2
- Running an action after a task fails and there are no more retries left HOT 1
- Please release version 0.12.3 HOT 1
- Running multiple workers HOT 9
- cron job updating HOT 6
- Windows Support HOT 2
- SAQ clients hang if one of workers is dead HOT 9
- "RuntimeError: read() called while another coroutine is already waiting for incoming data" while asyncio.gather job.refresh HOT 4
- For TERMINAL_STATUSES call after_process hook after the job status is updated HOT 1
- Random sweeping of jobs HOT 6
- 404 not found (task in web view) HOT 3
- Heartbeat-based task interruption not working as expected HOT 15
- job stuck in active state if saq process got killed
- History of completed tasks on the web? HOT 2
- not working in windows due to asyncio has no add_signal_handler HOT 1
- Cronjob management Runtime support HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from saq.