rq / Flask-RQ2

A Flask extension for RQ.
https://flask-rq2.readthedocs.io/
MIT License
229 stars 48 forks source link

Missing on_success and on_failure args in jobfunction.queue() #116

Open richardfat7 opened 3 years ago

richardfat7 commented 3 years ago

in this line and this line, the enqueue_call didn't recognise on_success and on_failure args, and passed it as kargs if supplied in function call. RQ related source

Sample code:

from flask_rq2 import RQ
from flask import Flask

app = Flask(__name__)
rq = RQ()

rq.init_app(app)

@rq.job()
def do_something():
    return "OK"

def report_success(*args, **kargs):
    print("success")

def report_failure(*args, **kargs):
    print("fail")

def try_to_queue():
    do_something.queue(queue="default", on_success = report_success, on_failure = report_failure)

try_to_queue()
MaxVRAM commented 3 years ago

I've been stuck on working out how to make a success callback in RQ2. But it seems like it's not implemented, so will probably go back to vanilla RQ.

mzpqnxow commented 2 years ago

I haven't looked at the source yet but it seems it should be a relatively simple addition. Any comment on whether this is supported in some other way, or if there are plans to implement it?

EDIT: @MaxVRAM, @richardfat7 , I added this and submitted as PR #118. There are instructions on how to install directly from that branch if you'd like to give it a shot. It works on my application. I'll need the Flask-RQ2 devs to review and merge if you'd like this to be available in the PyPi package

mzpqnxow commented 2 years ago

If this can be reviewed and consider for merge, that'd be terrific. Until then I'll maintain a separate branch

Thanks Flask-RQ2 devs for the work on this project- it makes things look so much cleaner

richardfat7 commented 2 years ago

Thanks @mzpqnxow . But I have fail back to use rq directly in flask.

chunchunmaru0 commented 3 months ago

what I did was import rq from current instance and get the queue then enqueue the job

from .tasks import rq

        q = rq.get_queue()
        job = q.enqueue(calculate, args=(1, 2), kwargs={}, on_success=log_every_second)