polyswarmclient.producer.jobprocessor

Module Contents

polyswarmclient.producer.jobprocessor.logger[source]
class polyswarmclient.producer.jobprocessor.PendingJob(key: str, jobs: List[JobRequest], future: Future)[source]

A wrapper around a list of Jobs that are processing in the backend

key :str[source]
jobs :List[JobRequest][source]
results :Dict[int, ScanResult][source]
future :Future[source]
times(self)[source]
time_ratios(self)[source]
__store_job_response(self, response: JobResponse, confidence_modifier: Optional[ConfidenceModifier])[source]

Converts a JobResponse to ScanResult with modified confidence. Stores at the correct index in internal results

Parameters
  • response – JobResponse to conver

  • confidence_modifier – an optional ConfidenceModifier to potentially change the confidence

Returns

is_done(self)[source]

Checks all things to see if it is done :return: true if expired, or has all results

__is_expired(self)[source]

Returns true if any of the jobs are expired

__has_all_results(self)[source]

Returns true if all the jobs have a result

__finish(self)[source]

Set the results in the future and mark done

class polyswarmclient.producer.jobprocessor.JobProcessor(redis: Redis, queue: str, confidence_modifier: Optional[ConfidenceModifier], period: float = 0.25, redis_error_callback: Optional[Callable[[], Coroutine]] = None)[source]

Keeps track pending jobs, and polls the PendingJob results every period of time (.5 seconds)

redis_uri :str[source]
confidence_modifier :Optional[ConfidenceModifier][source]
queue :str[source]
period :float[source]
pending_jobs :Dict[str, PendingJob][source]
job_lock :Optional[asyncio.Lock][source]
redis :Optional[Redis][source]
task[source]
reset_callback[source]
stop(self)[source]

Stop processing jobs