Metadata-Version: 2.1
Name: mongo_queue_service
Version: 0.0.3
Summary: Queue service built on top of mongo.
Home-page: https://github.com/shunyeka/mongo_queue/
Author: Amit Chotaliya
Author-email: amit@shunyeka.com
License: UNKNOWN
Download-URL: https://github.com/shunyeka/mongo_queue/archive/v0.0.1.tar.gz
Description: # mongo_queue
        Task queue built on mongo with channels and unique job id.
        
        [Website](http://www.shunyeka.com) • [autobotAI Cloud Governance](https://autobot.live/)
        
        Inspired from [kapilt/mongoqueue](https://github.com/kapilt/mongoqueue)
        
        ### Change Log:
        
        #### v0.0.3
        
        -  Added unique index with job_id and channel. This is to make sure that the same job is not added multiple times. If not job id provided an unique id generated by default. 
        
        ## Usage
        
        Install the package.
        
        ```
        pip install mongo_queue
        ```
        
        ###  Usage Example:
        
        *  Create Queue Object
        ```python
        from mongo_queue.queue import Queue
        from pymongo import MongoClient
        
        queue = Queue(MongoClient('localhost', 27017).task_queue, consumer_id="consumer-1", timeout=300, max_attempts=3)
        ```
        * Add task to queue default channel
        
        ```python
        queue.put({"task_id": 1})
        ```
        
        * Add task to queue with priority to default channel
        
        ```python
        queue.put({"task_id": 1}, priority=1)
        ```
        
        * Add task to queue in a specific channel
        
        ```python
        queue.put({"task_id": 1}, priority=1, channel="channel_1")
        ```
        
        * Add task to queue with unique job_id
        
        ```python
        queue.put({"task_id": 1}, priority=1, channel="channel_1", job_id="x_job")
        ```
        
        * Get the next job to be executed from the default channel
        
        ```python
        job = queue.next()
        ```
        
        * Get the next job to be executed from a specific channel
        
        ```python
        job = queue.next(channel="channel_1")
        ```
        
        * Update job progress for long running jobs
        
        ```python
        job.progress(count=10)
        ```
        
        * Put the job back in queue, this will be picked up again later, this will update attempts after max attempts the job will not be picked up again.
        
        ```python
        job.release()
        ```
        
        * Put the job back in queue with error, this will be picked up again later, this will update attempts after max attempts the job will not be picked up again.
        
        ```python
        job.error("Some error occured")
        ```
        
        * Complete the job. This will delete job from the database.
        
        ```python
        job.complete()
        ```
        
Keywords: mongo,queue,priority queue,task queue
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
