Mike,

A brief comment before I start:

your post would be a lot more readable and understandable if you were to
break it up into smaller paragraphs, each of which explains one point.
Otherwise it is a great wall of text which is fairly intimidating.


On 18/10/12 06:51, Mike wrote:

My program is command line based and is driven by the user making a
selection from the menu. Basically option 1 perform a HTTP GET request
to xyz.com/?get=test.  The user supply's a list  of target domains and
the query (?get=test) is static.

No it isn't. You go on to explain below that there are at least two
different queries:

?get=test
?get=check

and presumably no query at all (when param='').

Since the query is not static, but part of the request, it should be part
of the data pushed onto the queue. Instead of queuing just the domains,
queue a tuple (domain, query) or even the full URL.


This works great if the user selects option 1, but I am
running into problems when a user selects multiple options.  Say a
user selection 1 then option (2) with the targets being the same, but
the query string is now ?get=check. The problem I am facing is when
the threads run with option 1 and hit the initialization they are set
to ?get=test i.e. self.param=param. The param is passed in to the init
of the thread class.  When I initialize the class from option 1 I pass
in the param ?get=test and when I initialize the class with option 2 I
pass in the param ?get=check.  The default initialization is
self.param="".

Why is the query an attribute of the *thread*? The query is an attribute
of the request, not the thread.

Change your design, and the problem goes away.


Depending on which option they select first the thread
will be one of the following: blank, or one of the two options.  I
don't know how to update the thread variable when it's running i.e.def
run(self).

mythread.param = new_value

but please don't do this. The design is wrong, you have wrongly assumed
that the param is a part of the thread when it is actually a part of the
request.


I realize this sounds all confusing, but  I am basically
wondering how one would update a thread variable when it is running?
Also, is it best to spawn threads each time the user make a selection
or once when the program starts?

I would say, neither. It is best to spawn threads when they click the
"Make it go" button. Decide how many threads you need, spawn them, and
let them run.


--
Steven
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to