Skip to main content

Reads from a Laravel queue

Project description

Laravel Queue for Python

Currently:

  • only supports reading
  • only supports queues in postgres

Create a Queue Object

from laravel_queue import Queue

connection_string = "postgresql://user:password@host:5432/db"
queue = Queue(connection_string)

Queue Args:

connection: str or sqlalchemy.engine.base.Engine
queue: str, default 'python', the queue name in the database
jobs_table: str, default 'jobs.jobs', the table name for the jobs
failed_jobs_table: str, default 'jobs.failed_jobs', the table name for the failed jobs

Read Jobs from Queue

jobs = queue.jobs  ## List of jobs in queue object

Running Jobs

while queue.jobs:
    jobs = queue.jobs
    for job in jobs:
        job.run(function) ## run any function

function can be any function to run for this job Using the while loop allows any new jobs placed on the queue while processing to be carried out next.

Passing Params

To pass params in laravel to the python function, specify a param_map in the run function.

# laravel:
$this->groupId = 12;

# python
def function(group_id):
    pass

job.run(function, param_map={
    'groupId': 'group_id'
})

Additionally, you can specify a cache_lock_uid This can be either a str or a list of strings. This is to be used for managing the job cache if you are using the ShouldBeUnique or ShouldBeUniqueUntilProcessing properties in Laravel The cache_lock_uid should resemble what you have set uniqueId() to in laravel. If a list is sent, you can specify parameters to be filled with $:

# Laravel:
$this->param1 = 1
$this->param2 = 2

public function uniqueId(): string
    {
        return $this->param1 . '-' . $this->param2;
    }


# Python
job.run(function_name,
    param_map = {
        'param1': 'param1',
        'param2': param2'
    }
    cache_lock_uid = ['$param1', '-', '$param2'])

## $param1 and $param2 will be swapped in with the cooresponding value.

To use cache locks, you must specify the database as your cache for queue. You can do this as so:

public function uniqueVia(): Repository
    {
        return Cache::driver('database');
    }

If using the ShouldBeUniqueUntilProcessing property, you must specify that in you job runner as well. By default (unique_until_processing=False), the cache lock will be relased after processing, emulating the ShouldBeUnique laravel property. Setting this unique_until_processing=True will relase this lock at the start of the job, like ShouldBeUniqueUntilProcessing

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

laravel_queue-0.0.16.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

laravel_queue-0.0.16-py3-none-any.whl (5.8 kB view details)

Uploaded Python 3

File details

Details for the file laravel_queue-0.0.16.tar.gz.

File metadata

  • Download URL: laravel_queue-0.0.16.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for laravel_queue-0.0.16.tar.gz
Algorithm Hash digest
SHA256 4a9b5b957df06ca4018e197dba57d3d72bbe2c5c9d8864ebd5365ea07e0bf094
MD5 2e8552d2ea570e6f06a3e0c15ea0af48
BLAKE2b-256 e859c722a5dc2547fde3cdb11b0be11e64d90ff6654fb660013096baac293620

See more details on using hashes here.

File details

Details for the file laravel_queue-0.0.16-py3-none-any.whl.

File metadata

File hashes

Hashes for laravel_queue-0.0.16-py3-none-any.whl
Algorithm Hash digest
SHA256 31982fef3b139371267500d3cd14c067e33aef1e40d9ba421caf2fa801e24431
MD5 0db2849fdbebb2cb2f5e8cead2d6e41a
BLAKE2b-256 23de8beab5c7ef620c061ecf5c6e0069de46793955d26e617aab5b9047164ba4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page