def q_add(self, q_obj, arg_dict, timeout=30240):
        """
        This method adds a new crack job to the queue

        Parameters
        ---------
        job_id: str
                uuid string corresponding to job ID
        q_obj: object
                queue object to use (returned from q_connect)
        arg_dict: dict
                hc_worker function arguments to run hashcat
        timeout: int
                number of seconds before job will time out

        Returns
        -------
        boolean
            Success or failure
        """
        logger.info('Adding task to job queue: '
                    '{:s}'.format(arg_dict['job_id']))
        if 'speed_session' in arg_dict['kwargs']:
            q_obj.enqueue_call(func=run_hashcat.show_speed, job_id=arg_dict['job_id'],
                               kwargs=arg_dict['kwargs'], timeout=timeout,
                               result_ttl=-1)
        else:
            q_obj.enqueue_call(func=run_hashcat.hc_worker, job_id=arg_dict['job_id'],
                               kwargs=arg_dict['kwargs'], timeout=timeout,
                               result_ttl=-1)
        return

        This method adds a new crack job to the queue

        Parameters
        ---------
        job_id: str
                uuid string corresponding to job ID
        q_obj: object
                queue object to use (returned from q_connect)
        arg_dict: dict
                hc_worker function arguments to run hashcat
        timeout: int
                number of seconds before job will time out

        Returns
        -------
        boolean
            Success or failure
        
crackq/crackqueue.py