Emailing
Workers
Using
Python
Pam
Mueller
(Princeton
University,
[email protected])
&
Jesse
Chandler
(Princeton
University)
(This
version:
March
3,
2012)
These
instructions
allow
you
to
email
up
to
100
workers
at
a
time
using
boto.
Step
1
-
Download
Necessary
Software
Commands
can
be
sent
directly
to
Amazon
Web
Services
using
the
Python
programming
language,
but
you
also
must
install
boto,
which
is
an
interface
between
your
computer
and
Amazon
Web
Services.
1. Download
and
install
Python
(note
that
Macs
generally
come
with
Python
preloaded)
2. Download
and
install
boto
as
described
on
the
boto
site
(http://code.google.com/p/boto/).
Step
2
Configure
boto
(optional)
Boto
can
be
configured
to
remember
your
Amazon
Web
Services
access
information,
eliminating
the
need
to
reenter
it
at
the
beginning
of
each
session.
For
instructions
on
how
to
do
this,
see
here:
http://code.google.com/p/boto/wiki/BotoConfig
2.1
Regardless
of
whether
you
set
up
a
permanent
file
or
not,
you
will
need
your
access
key
and
secret
access
key.
Obtain
your
Amazon
Web
Services
access
key
and
secret
access
key
by
going
here,
login
and
view
security
credentials.
Step
3
Emailing
Workers
1. Macs:
in
the
Terminal
window,
run
Python
(by
typing
python)
PCs:
launch
python
from
the
Start
menu
2. Type
the
following
commands,
hitting
Enter
after
each:
2.1. import boto
2.2. from boto.mturk.connection import *
Note:
the
asterisk
is
part
of
the
code.
2.3. access_key=[your access key]
Note:
This
is
not
necessary
if
you
have
stored
your
access
information
in
a
.config
file
(Step
2)
2.4. secret_access_key=[your secret access key]
Note:
This
is
not
necessary
if
you
have
stored
your
access
information
in
a
.config
file
(Step
2)
2.5. c=boto.mturk.connection.MTurkConnection
(access_key, secret_access_key)
Note:
the
c
here
could
be
anything.
Youre
just
using
it
as
a
variable
to
store
that
lengthy
command
after
it.
Otherwise,
youd
have
to
type
that
out
for
every
command
you
ran.
2.6. c.get_account_balance()
Note:
This
is
not
a
necessary
command;
however,
we
use
this
as
a
test
each
time
we
launch
the
CLT
or
API
to
make
sure
everything
is
set
up
correctly.
The
account
balance
provided
should
match
what
you
see
in
your
account
via
the
web
interface.
2.7. subject=whatever you want the subject of the email to workers to
be
2.8. message=whatever you want the message text to be.
Note:
If
you
want
to
include
paragraph
breaks
in
the
message,
enclose
the
entire
message
in
triple
quotes
(either
or
will
work).
2.9. workerids=[A360SF8N3MPFDV,AH78W67KLW0IH1,
A2JE8C19CAN2UL, A12CXT8ND5HZ89, etc.]
Note:
You
can
send
up
to
100
workerids
at
a
time
(you
can
cut
and
paste
a
list
in
this
format
into
the
window)
2.10. for item in workerids: c.notify_workers(item, subject, message)
For
every
successful
message
sent,
the
command
will
return
a
[].
If
a
worker
has
quit
MTurk
and
the
ID
is
no
longer
valid,
upon
reaching
that
worker,
the
command
will
return
an
error
and
will
not
continue.
You
can
then
send
a
new
command
to
message
workers
starting
with
the
workerid
after
the
one
that
caused
the
error.
There
may
be
a
way
to
code
around
this
(testing
the
IDs
to
see
if
theyre
valid),
but
we
havent
found/developed
it
yet.